Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menentukan Bilangan Teras pada Mesin Secara Pengaturcaraan?

Bagaimanakah Saya Boleh Menentukan Bilangan Teras pada Mesin Secara Pengaturcaraan?

DDD
Lepaskan: 2024-12-13 09:23:11
asal
174 orang telah melayarinya

How Can I Programmatically Determine the Number of Cores on a Machine?

Menentukan Bilangan Teras pada Mesin Secara Pengaturcaraan

Dalam pelbagai senario pengkomputeran, memahami bilangan teras yang tersedia pada mesin adalah penting. C/C tidak menawarkan penyelesaian bebas platform untuk tugas ini. Walau bagaimanapun, terdapat pendekatan khusus platform yang boleh memberikan maklumat ini.

C 11 (Bebas Platform)

C 11 memperkenalkan std::thread::hardware_concurrency () fungsi, yang menyediakan kaedah mudah alih untuk mendapatkan bilangan teras.

#include <thread>

const auto processor_count = std::thread::hardware_concurrency();
Salin selepas log masuk

Pra-C 11 (Platform-Specific)

Dalam C sebelum C 11, kaedah khusus mesti digunakan bergantung pada platform:

Win32

SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
int numCPU = sysinfo.dwNumberOfProcessors;
Salin selepas log masuk

Linux, Solaris, AIX, Mac OS X >=10.4

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

FreeBSD, MacOS X, NetBSD, OpenBSD

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;  // alternatively, try HW_NCPU;

/* get the number of CPUs from the system */
sysctl(mib, 2, &numCPU, &len, NULL, 0);
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 menggunakan kaedah khusus platform ini atau pendekatan bebas platform C 11, anda boleh menentukan secara pemprograman bilangan teras yang tersedia pada mesin, membolehkan anda mengoptimumkan penggunaan sumber dan mencapai prestasi yang lebih baik dalam aplikasi anda.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menentukan Bilangan Teras pada Mesin Secara Pengaturcaraan?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan