2011-09-18 34 views

回答

2

总的来说,你不能以有意义的方式做到这一点。调度人员可能会在中途通过询问问题并在不同的处理器上恢复,从而使您得到先机。

2

没有可移植的方法。如果你使用GNU/Linux,你可以尝试功能sched_getcpu

+1

其实我没有仔细回答之前阅读您的问题..'shced_getcpu'只返回逻辑ID。我想你需要在/ proc/cpuinfo中查看它以获取物理信息(物理CPU,核心,超线程等)。 – chys

1

我不认为,因为线程没有运行由单一的处理器,而是由一个时间表,这曾经处理器被释放在那个时候将采取一定的时间的工作,然后保存数据,然后又是可能的处理器可能会采取这项工作

+0

但不会操作系统尽量确保有核心相似充其量也就是尽可能尝试运行之前运行相同的核心线程,使其不必清除与该线程相关联的TLB等?否则会有很多TLB未命中?至少在Linux中,线程或多或少被视为一个进程。 –

+1

@David和堆栈器只是指出返回的结果是陈旧的,可能不再有效。操作系统调度程序会做出任何优化,但是,如果用户点击浏览器链接并在“什么核心”调用期间将一系列准备就绪的线程转储到系统中,那么线程TLB缓存的内容将会很快消失它会再次运行,并可以在任何核心上弹出。 –