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

Bagaimanakah Saya Boleh Menentukan Kiraan Teras Mesin dalam C ?

DDD
DDDasal
2024-12-29 02:55:10170semak imbas

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();

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!

Kenyataan:
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