[C/C++11]_[初级]_[获取CPU支持的最合适的核心线程数]

Posted infoworld

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[C/C++11]_[初级]_[获取CPU支持的最合适的核心线程数]相关的知识,希望对你有一定的参考价值。

场景

  1. 当使用线程池时,一般需要获取最合适的最大线程数,因为在每个进程每个CPU核心最高性能是只处理一个线程。因此可见最合适的线程总数就是CPU核心数。那么如何获取CPU核心数?

说明

  1. 很遗憾,C++标准还没有线程池,要么自己开发,要么使用第三方库。

  2. 获取CPU核心数,在C++11里已经支持获取CPU支持的最合适的核心线程数,通过<thread>的类静态方法获得thread::hardware_concurrency()[2].

    Static. Returns an estimate of the number of hardware thread contexts.
    
  3. 如果编译器没有<thread>库,在Windows上可以通过Win32函数GetSystemInfo(LPSYSTEM_INFO)获得.

例子

  1. 使用VS2017以上编译运行。
#include <Windows.h>

#include <thread>
#include <iostream>


using namespace std;


void TestCpuConcurrentThreadCount() 
	cout << "Thread count support: " << thread::hardware_concurrency() << endl;

	SYSTEM_INFO info;
	::GetSystemInfo(&info);

	cout << "CPU count: " << info.dwNumberOfProcessors << endl;


int main()

	TestCpuConcurrentThreadCount();

参考

  1. std::thread::hardware_concurrency - cppreference.com

  2. thread Class | Microsoft Learn

  3. GetSystemInfo function (sysinfoapi.h) - Win32 apps | Microsoft Learn

以上是关于[C/C++11]_[初级]_[获取CPU支持的最合适的核心线程数]的主要内容,如果未能解决你的问题,请参考以下文章

[C/C++11]_[初级]_[获取CPU支持的最合适的核心线程数]

[C/C++11]_[初级]_[获取CPU支持的最合适的核心线程数]

[C/C++11]_[初级]_[使用正则表达式库regex]

[C/C++11语法]_[初级]_[lamba 表达式介绍]

[C/C++]_[初级]_[关于编译时出现有符号-无符号不匹配的警告-sizeof使用注意事项]

[C/C++]_[初级]_[关于编译时出现有符号-无符号不匹配的警告-sizeof使用注意事项]