我正在寻找一个在Mac OS和BSD上等效于Linux的sched_getcpu()
和Windows GetCurrentProcessorNumberEx()
的功能,以实现CPU本地存储的库。显然可以用 cpuid 或 rdtscp 指令来模拟这一点,但内核协作可以做得更好:https://lkml.org/lkml/2007/1/6/190。
我已经知道,在我使用该信息时,线程的当前 CPU 可能会发生变化。
有一两个问题涵盖了OSX的队列跟踪,还有一个dispatch_get_global_queue的wiki页面涵盖了BSD的等效内容。我不知道您是否可以将队列映射到 CPU,但如果是这样,这似乎是最接近的等价物。