作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
在 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/
我在谷歌云上有一台虚拟机,有 1 个 CPU 插槽,16 个内核,每个内核 2 个线程(超线程)。 这是 lscpu 的输出: Architecture: x86_64 CPU op
最近我在 Linux 上使用头文件 sched.h 中的函数 sched_getcpu()。 但是,我想知道在哪里可以找到这个函数的源代码? 谢谢。 最佳答案 在 Linux 下,sched_getc
在 OS X 上,有没有办法找出线程在哪个 CPU 上运行? Linux 的等效函数是 sched_getcpu 最佳答案 GetCurrentProcessorNumber示例显示了使用 CPUID
我正在尝试调试 Linux 上 pthreads 的一些性能问题,我认为 sched_getcpu()可能是在骗我。它报告每个线程的 CPU 不变,而分析实验似乎表明线程实际上在其生命周期内从一个内核
我是一名优秀的程序员,十分优秀!