首页 > 后端开发 > C++ > 如何以编程方式确定机器上的内核数量?

如何以编程方式确定机器上的内核数量?

DDD
发布: 2024-12-13 09:23:11
原创
176 人浏览过

How Can I Programmatically Determine the Number of Cores on a Machine?

以编程方式确定机器上的核心数量

在各种计算场景中,了解机器上可用的核心数量至关重要。 C/C 没有为此任务提供独立于平台的解决方案。但是,有一些特定于平台的方法可以提供此信息。

C 11(平台无关)

C 11 引入了 std::thread::hardware_concurrency () 函数,它提供了一种可移植的方法来获取数量

#include <thread>

const auto processor_count = std::thread::hardware_concurrency();
登录后复制

Pre-C 11(特定于平台)

在 C 11 之前的 C 中,必须使用特定方法,具体取决于平台:

Win32

SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
int numCPU = sysinfo.dwNumberOfProcessors;
登录后复制

Linux、Solaris、AIX、Mac OS X >=10.4

int numCPU = sysconf(_SC_NPROCESSORS_ONLN);
登录后复制

FreeBSD、MacOS X、NetBSD、 OpenBSD

int mib[4];
int numCPU;
std::size_t len = sizeof(numCPU); 

/* set the mib for hw.ncpu */
mib[0] = CTL_HW;
mib[1] = HW_AVAILCPU;  // alternatively, try HW_NCPU;

/* get the number of CPUs from the system */
sysctl(mib, 2, &numCPU, &len, NULL, 0);
登录后复制

HPUX

int numCPU = mpctl(MPC_GETNUMSPUS, NULL, NULL);
登录后复制

IRIX

int numCPU = sysconf(_SC_NPROC_ONLN);
登录后复制

目标- C(Mac OS X >=10.5 或iOS)

NSUInteger a = [[NSProcessInfo processInfo] processorCount];
NSUInteger b = [[NSProcessInfo processInfo] activeProcessorCount];
登录后复制

通过利用这些特定于平台的方法或独立于 C 11 平台的方法,您可以以编程方式确定计算机上可用的内核数量,从而使您能够优化资源利用率和在您的应用程序中实现更好的性能。

以上是如何以编程方式确定机器上的内核数量?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板