首页 > 后端开发 > C++ > 如何以编程方式确定不同系统中 CPU 核心的数量?

如何以编程方式确定不同系统中 CPU 核心的数量?

Susan Sarandon
发布: 2024-12-14 18:10:11
原创
426 人浏览过

How to Programmatically Determine the Number of CPU Cores in Different Systems?

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

在各种场景中,确定机器拥有的核心数量变得至关重要。此信息有助于优化资源分配和了解系统功能。有多种方法可以确定这一关键指标。

C 11 及以后

C 11 引入了一种用于检索核心计数的便携式解决方案:

#include <thread>

// May return 0 if unable to detect.
const auto processor_count = std::thread::hardware_concurrency();
登录后复制

Pre-C 11 和特定于平台的方法

在 C 11 之前,采用特定于平台的方法:

Windows

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

Linux、Solaris 、AIX、Mac OS X(老虎开始)

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

FreeBSD、macOS、NetBSD、 OpenBSD

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

mib[0] = CTL_HW;
mib[1] = HW_AVAILCPU;

sysctl(mib, 2, &numCPU, &len, NULL, 0);

if (numCPU < 1) 
{
    mib[1] = HW_NCPU;
    sysctl(mib, 2, &numCPU, &len, NULL, 0);
    if (numCPU < 1)
        numCPU = 1;
}
登录后复制

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];
登录后复制

通过利用这些技术,开发人员可以轻松确定其计算机上可用的内核数量,从而实现高效的资源利用和性能优化。

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

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