>백엔드 개발 >C++ >머신의 코어 수를 프로그래밍 방식으로 어떻게 확인할 수 있습니까?

머신의 코어 수를 프로그래밍 방식으로 어떻게 확인할 수 있습니까?

DDD
DDD원래의
2024-12-13 09:23:11178검색

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

프로그래밍 방식으로 머신의 코어 수 결정

다양한 컴퓨팅 시나리오에서는 머신에서 사용 가능한 코어 수를 이해하는 것이 중요합니다. C/C는 이 작업에 대해 플랫폼 독립적인 솔루션을 제공하지 않습니다. 그러나 이 정보를 제공할 수 있는 플랫폼별 접근 방식이 있습니다.

C 11(플랫폼 독립적)

C 11에서는 std::thread::hardware_concurrency를 도입합니다. () 함수는 숫자를 얻는 이식 가능한 방법을 제공합니다.

#include <thread>

const auto processor_count = std::thread::hardware_concurrency();

Pre-C 11(플랫폼별)

C 11 이전의 C에서는 특정 방법을 사용해야 합니다. 플랫폼:

Win32

SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
int numCPU = sysinfo.dwNumberOfProcessors;

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

int numCPU = sysconf(_SC_NPROCESSORS_ONLN);

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

HPUX

int numCPU = mpctl(MPC_GETNUMSPUS, NULL, NULL);

IRIX

int numCPU = sysconf(_SC_NPROC_ONLN);

목표- C(Mac OS X >=10.5 또는 iOS)

NSUInteger a = [[NSProcessInfo processInfo] processorCount];
NSUInteger b = [[NSProcessInfo processInfo] activeProcessorCount];

이러한 플랫폼별 방법이나 C 11 플랫폼 독립적인 접근 방식을 활용하면 시스템에서 사용 가능한 코어 수를 프로그래밍 방식으로 결정할 수 있으므로 리소스 활용도를 최적화하고 귀하의 애플리케이션에서 더 나은 성능을 얻으세요.

위 내용은 머신의 코어 수를 프로그래밍 방식으로 어떻게 확인할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.