2011-01-31 160 views
2

假设一台机器上有两个处理器。线程A在P1上运行,线程B在P2上运行。线程和CPU亲和力

线程A调用Sleep(10000);

是否有可能的是,当线程A再次开始执行,它运行在P2?

如果是,谁来决定这个过渡?如果不是,为什么不呢?

Processor是否存储了一些数据,它所运行的所有线程或OS将每个线程绑定到处理器的整个生命周期?

回答

1

这是可能的。这将由操作系统进程调度程序确定,也可能取决于正在运行的应用程序。除了缓存中的内容以外,处理器不保存关于以前运行的线程的信息。

0

这取决于很多事情,它取决于特定的操作系统具有不同的行为。另见:Processor AffinityScheduling Algorithms。在Windows下,您可以通过任务管理器将特定进程固定到处理器内核。

0

是的,这是可能的。尽管最终一个线程从进程(可执行文件)继承了其CPU(或CPU核心)。在操作系统中,进程为其当前量程(时间片)运行的CPU或CPU内核由调度程序决定:

http://en.wikipedia.org/wiki/Scheduling_(computing

-Oisin

0

操作系统决定要运行的处理器上的螺纹,并且它可以该线程的寿命期间很容易地改变,尤其是如果有一个上下文切换(所造成的睡眠)。如果系统加载完全可能,两个线程将在不同的时间在同一个处理器(或核心)上运行。或者如果系统上没有任何负载,那么这两个线程可能会继续在单独的处理器上运行。