Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在C+;中获取总计核心数量的跨平台代码段是什么+;?_C++_Cross Platform_Cpu_Code Snippets_Cpu Cores - Fatal编程技术网

C++ 在C+;中获取总计核心数量的跨平台代码段是什么+;?

C++ 在C+;中获取总计核心数量的跨平台代码段是什么+;?,c++,cross-platform,cpu,code-snippets,cpu-cores,C++,Cross Platform,Cpu,Code Snippets,Cpu Cores,可能重复: 我想知道是否有任何跨平台(std或基于boost的,甚至是c)的方法可以以跨平台的方式获得核的总数?(适用于linux Mac Os X和Windows)噢,您可能需要着手组装 或: 您可以使用OpenMP的omp\u get\u max\u threads()函数。对于g++,使用-fopenmp指令启用OpenMP。对于MS Visual Studio,请在项目属性-配置属性-C/C++语言中启用它。请注意,如果已使用omp\u set\u num\u threads()限制

可能重复:


我想知道是否有任何跨平台(std或基于boost的,甚至是c)的方法可以以跨平台的方式获得核的总数?(适用于linux Mac Os X和Windows)

噢,您可能需要着手组装

或:


您可以使用OpenMP的
omp\u get\u max\u threads()
函数。对于g++,使用-fopenmp指令启用OpenMP。对于MS Visual Studio,请在项目属性-配置属性-C/C++语言中启用它。请注意,如果已使用
omp\u set\u num\u threads()
限制OpenMP并行区域允许使用的线程数,则
omp\u get\u max\u threads()
返回的线程数可能小于硬件核心/线程的实际数(程序启动时不是问题)。您还应该注意,对于超线程CPU
omp\u get\u max\u threads()
不返回硬件CPU内核的数量,而是返回CPU支持的硬件线程的数量(以及超线程提供的附加线程并不能完全减少它)。

我不这么认为;既然汇编语言什么时候是跨平台的?这段代码只在win32上运行(使用
SetThreadAffinityMask
etc)@krax11erx,库本身就是跨平台的,至少它声称是这样的@bdonlan-其他系统在库的其他文件中boost方法现在是c++11中的标准:std::thread::hardware\u concurrency()你是第一个投票结束自己的问题的人吗?欧欧欧
boost::thread::hardware_concurrency(); // returns number of cores/HT/procs