29 EYLÜL 2008, PAZARTESİ
Programlı bir makinede çekirdek sayısını bulmak
Bir şekilde kaç tane makine var platform-bağımsız bir şekilde C/C belirlemek için var mı? Eğer böyle bir şey varsa, ne per-platform (Windows/*nix/Mac) belirleme hakkında?
CEVAP
29 EYLÜL 2008, PAZARTESİ
C 11
http://en.cppreference.com/w/cpp/thread/thread/hardware_concurrency
//may return 0 when not able to detect
unsigned concurentThreadsSupported = std::thread::hardware_concurrency();
Win32:
SYSTEM_INFO sysinfo;
GetSystemInfo( &sysinfo );
numCPU = sysinfo.dwNumberOfProcessors;
Linux, Solaris, & AİX ve Mac OS X (OS sürümleri için >= 10.4 yani Tiger itibaren) - yorum başına:
numCPU = sysconf( _SC_NPROCESSORS_ONLN );
FreeBSD, X, NetBSD, OpenBSD, vb. MacOS:
int mib[4];
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);
if( numCPU < 1 )
{
mib[1] = HW_NCPU;
sysctl( mib, 2, &numCPU, &len, NULL, 0 );
if( numCPU < 1 )
{
numCPU = 1;
}
}
HPUX:
numCPU = mpctl(MPC_GETNUMSPUS, NULL, NULL);
IRIX:
numCPU = sysconf( _SC_NPROC_ONLN );
Veya iOS (herhangi bir sürüm) Mac OS X (10.5 ve daha yeni) kullanarak Objective-C:
NSUInteger a = [[NSProcessInfo processInfo] processorCount];
NSUInteger b = [[NSProcessInfo processInfo] activeProcessorCount];
Bunu Paylaş:
Nasıl CPU Çekirdek Sayısını) bulmak iç...
Nasıl Mac OS X üzerinde *mantıklı* çek...
Nasıl CPU/çekirdek sayısını elde etmek...
Bir tablodaki sütun sayısını bulmak...
En hızlı sayı dizisi eksik sayısını bu...