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) 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!NSUInteger a = [[NSProcessInfo processInfo] processorCount];
NSUInteger b = [[NSProcessInfo processInfo] activeProcessorCount];