在 OS X 上,有没有办法找出线程正在哪个 CPU 上运行? Linux 的等效函数是调度获取CPU http://man7.org/linux/man-pages/man3/sched_getcpu.3.html
获取当前处理器编号 https://stackoverflow.com/a/18866681/6736846示例显示了使用 CPUID 指令实现此功能的代码。我自己尝试过,可以确认它可以在 Mac OS X 上运行。
这是我在 Mac OS X 上使用的版本
#include <cpuid.h>
#define CPUID(INFO, LEAF, SUBLEAF) __cpuid_count(LEAF, SUBLEAF, INFO[0], INFO[1], INFO[2], INFO[3])
#define GETCPU(CPU) { \
uint32_t CPUInfo[4]; \
CPUID(CPUInfo, 1, 0); \
/* CPUInfo[1] is EBX, bits 24-31 are APIC ID */ \
if ( (CPUInfo[3] & (1 << 9)) == 0) { \
CPU = -1; /* no APIC on chip */ \
} \
else { \
CPU = (unsigned)CPUInfo[1] >> 24; \
} \
if (CPU < 0) CPU = 0; \
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)