gpt4 book ai didi

c - sched_getcpu() 等同于 OS X?

转载 作者:太空狗 更新时间:2023-10-29 15:03:42 27 4
gpt4 key购买 nike

在 OS X 上,有没有办法找出线程在哪个 CPU 上运行? Linux 的等效函数是 sched_getcpu

最佳答案

GetCurrentProcessorNumber示例显示了使用 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; \
}

关于c - sched_getcpu() 等同于 OS X?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33745364/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com