首頁 > 後端開發 > C++ > 如何以程式設計方式確定機器上的核心數量?

如何以程式設計方式確定機器上的核心數量?

DDD
發布: 2024-12-13 09:23:11
原創
174 人瀏覽過

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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板