我有一个用mingw-w64编译的数学C ++程序,它可以检测系统中用于启动最佳工作线程数的逻辑核心数。
它在我到目前为止测试的所有机器上运行良好,但是一个用户报告只启动了20个线程,而他有一个2-Xeon机器,每个机器有10个超线程内核,共有40个逻辑处理器。 / p>
Windows 2012 Server任务管理器报告:2个套接字,20个内核,40个逻辑处理器(我有截图)。多CPU负载图表有40个图表(我也有截图)
但是,我总是只使用以下三种方法中的任何一种来检测20个逻辑处理器:
GetSystemInfo()
std::thread::hardware_concurrency()
来自C ++ 11 stdlib QThread::idealThreadCount()
无论如何,后者很可能是使用第一个实现的。
如何正确检测逻辑核心的实际数量?
谢谢!