1

有没有办法获得系统中处理单元的数量,如 cpus 或核心?我将使用 pthreads 编写一个应用程序,所以如果有一个 posix 调用会很棒。我知道从 /proc/cpuinfo 读取,但这不是那么便携。还有其他更便携的方式吗?

4

4 回答 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 回答