有没有办法获得系统中处理单元的数量,如 cpus 或核心?我将使用 pthreads 编写一个应用程序,所以如果有一个 posix 调用会很棒。我知道从 /proc/cpuinfo 读取,但这不是那么便携。还有其他更便携的方式吗?
问问题
346 次
4 回答
4
POSIX(线程)委员会考虑支持这样的操作,但后来拒绝了。人们已经收集了有关如何在各种系统上执行此操作的信息。
于 2009-07-16T08:28:33.493 回答
1
我知道没有 POSIX 方式。您需要回退并进行每个平台的检查,或者找到一个已经为您进行检查的库。
于 2009-07-16T08:27:21.467 回答
0
据我所知不是。例如,在 windows 下,您可以从 GetSystemInfo 中获得它。您可能可以使用 CPUID 汇编程序调用在 x86 CPU 上获取此信息,但这在非 x86 平台上没有用。
于 2009-07-16T08:27:41.933 回答
0
如果您在谈论英特尔 CPU,您可以使用:
int ncores=0,nthreads=0;
asm volatile("cpuid": "=a" (ncores), "=b" (nthreads) : "a" (0xb), "c" (0x1) : );
于 2019-03-23T08:11:02.453 回答