0

我正在考虑多处理背后的概念,并且我试图找出为什么使用包含所有未运行的可运行线程的就绪列表的原因,而不是带有头部的所有可运行线程的列表数据结构是正在运行的线程吗?

感谢您的意见。

编辑:让我澄清一下。据我所知,线程包使用就绪列表来标识那些准备好运行的进程,而正在运行的进程则由一个单独的变量来标识。为什么不直接将正在运行的进程包含在就绪列表数据结构中,运行线程在结构的头部,使得线程包全包。多处理会在这个设计方案中引起问题吗?

4

1 回答 1

2

因为一个线程一次只能在一个处理器(核心)上运行。准备运行的线程列表(实际上是队列)主要由调度程序在寻找应该运行的线程时使用。如果一个线程已经在一个 CPU 上运行,它就不能同时在另一个 CPU 上运行,所以调度程序不想查看它(当时——稍后某个时候它没有运行并且有资格运行再次,它会再次关心它......)

于 2011-05-10T23:20:39.267 回答