大概有一个库或简单的asm blob,可以获取我正在执行的当前CPU的编号。
使用sched_getcpu以确定在其上调用线程运行的CPU。请参阅man getcpu(系统调用)和man sched_getcpu(库包装器)。但是,请注意其内容:
sched_getcpu
man getcpu
man sched_getcpu
仅在调用时保证放置在cpu中的信息是最新的:除非已使用sched_setaffinity(2)修复了CPU关联性,否则内核可能随时更改CPU。(通常不会发生这种情况,因为调度程序会尝试最大程度地减少CPU之间的移动以保持高速缓存保持高速,但有可能这样做。)当cpu和node不再是当前的CPU和节点时,调用者必须准备好处理这种情况。