Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menentukan Kiraan Teras Mesin dalam C ?

Bagaimanakah Saya Boleh Menentukan Kiraan Teras Mesin dalam C ?

DDD
Lepaskan: 2024-12-29 02:55:10
asal
141 orang telah melayarinya

How Can I Portably Determine a Machine's Core Count in C  ?

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

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

Sistem seperti Unix

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

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

Objektif-C (macOS 10.5 atau Lebih Baru)

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

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!

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