Penentuan Bebas Platform bagi Kiraan Teras Mesin
Menentukan bilangan teras pada mesin boleh menjadi penting untuk mengoptimumkan prestasi perisian. Walau bagaimanapun, mencari penyelesaian bebas platform untuk tugas ini boleh mencabar.
Penyelesaian C 11
Nasib baik, C 11 telah memperkenalkan kaedah agnostik platform untuk mengenal pasti teras count:
#include <thread> const auto processor_count = std::thread::hardware_concurrency();
Kaedah ini mengembalikan nombor logik teras, seperti yang dilaporkan oleh perkakasan asas dan sistem pengendalian.
Penyelesaian Pra-C 11
Untuk versi C sebelum C 11, tiada cara mudah alih untuk menentukan kiraan teras. Sebaliknya, pendekatan khusus platform mesti digunakan:
Windows
SYSTEM_INFO sysinfo; GetSystemInfo(&sysinfo); int numCPU = sysinfo.dwNumberOfProcessors;
Sistem seperti Unix
int numCPU = sysconf(_SC_NPROCESSORS_ONLN);
macOS (Sebelum 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);
Objektif-C (macOS 10.5 atau Lebih Baru)
NSUInteger a = [[NSProcessInfo processInfo] processorCount];
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Kiraan Teras Mesin dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!