win32 / stdlib只检测Windows下C / C ++中逻辑核心数量的一半

时间:2015-12-18 15:05:06

标签: c++ windows multithreading winapi cpu-cores

我有一个用mingw-w64编译的数学C ++程序,它可以检测系统中用于启动最佳工作线程数的逻辑核心数。

它在我到目前为止测试的所有机器上运行良好,但是一个用户报告只启动了20个线程,而他有一个2-Xeon机器,每个机器有10个超线程内核,共有40个逻辑处理器。 / p>

Windows 2012 Server任务管理器报告:2个套接字,20个内核,40个逻辑处理器(我有截图)。多CPU负载图表有40个图表(我也有截图)

但是,我总是只使用以下三种方法中的任何一种来检测20个逻辑处理器:

    来自Win32 C API的
  • GetSystemInfo()
  • std::thread::hardware_concurrency()来自C ++ 11 stdlib
  • 来自Qt 5.4的
  • QThread::idealThreadCount()

无论如何,后者很可能是使用第一个实现的。

如何正确检测逻辑核心的实际数量?

谢谢!

0 个答案:

没有答案