首頁 >後端開發 >C++ >如何用 C 語言輕鬆確定機器的核心數量?

如何用 C 語言輕鬆確定機器的核心數量?

DDD
DDD原創
2024-12-29 02:55:10160瀏覽

How Can I Portably Determine a Machine's Core Count in C  ?

獨立於平台確定機器核心數量

確定機器上的核心數量對於優化軟體效能至關重要。然而,為這項任務找到一個獨立於平台的解決方案可能具有挑戰性。

C 11 解

幸運的是,C 11引入了一種與平台無關的方法來識別核心count:

#include <thread>

const auto processor_count = std::thread::hardware_concurrency();

此方法返回內核的邏輯數量,由底層硬體和操作報告system.

C 11先前的解決方案

對於C 11 之前的C 版本,沒有可移植的方法來確定核心數量。相反,必須使用特定平台的方法:

Windows

SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
int numCPU = sysinfo.dwNumberOfProcessors;

類 Unix 系統

int numCPU = sysconf(_SC_NPROCESSORS_ONLN);

macOS(之前10.5)

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;

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

Objective-C(macOS 10.5 或更高版本)

NSUInteger a = [[NSProcessInfo processInfo] processorCount];

以上是如何用 C 語言輕鬆確定機器的核心數量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn