Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menentukan Bilangan Teras CPU Secara Pengaturcaraan dalam Sistem Berbeza?

Bagaimana untuk Menentukan Bilangan Teras CPU Secara Pengaturcaraan dalam Sistem Berbeza?

Susan Sarandon
Susan Sarandonasal
2024-12-14 18:10:11426semak imbas

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

Menentukan Bilangan Teras Mesin Secara Pengaturcaraan

Dalam pelbagai senario, adalah penting untuk memastikan bilangan teras yang dimiliki oleh mesin. Maklumat ini membantu dalam mengoptimumkan peruntukan sumber dan memahami keupayaan sistem. Beberapa kaedah wujud untuk menentukan metrik penting ini.

C 11 dan Seterusnya

C 11 memperkenalkan penyelesaian mudah alih untuk mendapatkan semula kiraan teras:

#include <thread>

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

Pra-C 11 dan Khusus Platform Pendekatan

Sebelum C 11, kaedah khusus platform telah digunakan:

Windows

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

Linux, Solaris , AIX, Mac OS X (Tiger seterusnya)

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);

Objektif- C (Mac OS X >= 10.5 atau iOS)

NSUInteger a = [[NSProcessInfo processInfo] processorCount];
NSUInteger b = [[NSProcessInfo processInfo] activeProcessorCount];

Dengan memanfaatkan teknik ini, pembangun boleh dengan mudah menentukan bilangan teras yang tersedia pada mesin mereka, membolehkan penggunaan sumber yang cekap dan pengoptimuman prestasi.

Atas ialah kandungan terperinci Bagaimana untuk Menentukan Bilangan Teras CPU Secara Pengaturcaraan dalam Sistem Berbeza?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn