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
Lepaskan: 2024-12-14 18:10:11
asal
447 orang telah melayarinya

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();
Salin selepas log masuk

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;
Salin selepas log masuk

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

int numCPU = sysconf(_SC_NPROCESSORS_ONLN);
Salin selepas log masuk

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;
}
Salin selepas log masuk

HPUX

int numCPU = mpctl(MPC_GETNUMSPUS, NULL, NULL);
Salin selepas log masuk

IRIX

int numCPU = sysconf(_SC_NPROC_ONLN);
Salin selepas log masuk

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

NSUInteger a = [[NSProcessInfo processInfo] processorCount];
NSUInteger b = [[NSProcessInfo processInfo] activeProcessorCount];
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan