假设一台机器上有两个处理器。线程 A 在 P1 上运行,线程 B 在 P2 上运行。
线程 A 调用 Sleep(10000);
是否有可能当线程 A 再次开始执行时,它在 P2 上运行?
如果是,谁来决定这种转变?如果没有,为什么不呢?
处理器是否存储了它正在运行的所有线程的一些数据,或者操作系统将每个线程绑定(bind)到处理器的整个生命周期?
最佳答案
有可能的。这将由操作系统进程调度程序确定,也可能取决于正在运行的应用程序。除了缓存中的任何信息之外,处理器不会保留有关先前运行的线程的信息。
关于multithreading - 线程和 CPU 亲和性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4847432/