有没有办法在系统中获得cpus或内核等处理单元?我打算用pthreads编写一个应用程序,所以如果有一个posix调用会很棒。我知道从/ proc / cpuinfo读取,但这不是那么便携。还有另一种更便携的方式吗?
答案 0 :(得分:4)
POSIX(线程)委员会考虑支持这样的操作,但后来拒绝了。人们已经收集了有关如何在各种系统上执行此操作的信息。
答案 1 :(得分:1)
我所知道的没有POSIX方式。您需要退回并执行每个平台检查,或找到已经为您进行检查的库。
答案 2 :(得分:0)
据我所知。例如,在Windows下,你可以从GetSystemInfo获得它。您可以使用CPUID汇编程序调用在x86 CPU上获取此信息,但这在非x86平台上没有用。
答案 3 :(得分:0)
如果您谈论的是Intel CPU,则可以使用:
int ncores=0,nthreads=0;
asm volatile("cpuid": "=a" (ncores), "=b" (nthreads) : "a" (0xb), "c" (0x1) : );