Multithreading 为什么不使用可运行线程的完整列表,而不仅仅是可运行但未运行的线程?
我正在考虑多处理背后的概念,并试图找出为什么使用包含所有未运行的可运行线程的就绪列表,而不是数据结构头部为运行线程的所有可运行线程的列表 谢谢你的意见Multithreading 为什么不使用可运行线程的完整列表,而不仅仅是可运行但未运行的线程?,multithreading,list,multiprocessing,ready,Multithreading,List,Multiprocessing,Ready,我正在考虑多处理背后的概念,并试图找出为什么使用包含所有未运行的可运行线程的就绪列表,而不是数据结构头部为运行线程的所有可运行线程的列表 谢谢你的意见 编辑:让我澄清一下。据我所知,线程包使用就绪列表来标识准备运行的进程,而运行的进程由单独的变量标识。为什么它们不将正在运行的进程包含在ready list数据结构中,并将正在运行的线程放在结构的头部,从而使线程包包罗万象。多处理是否会导致此设计方案出现问题?因为一个线程一次只能在一个处理器(核心)上运行。准备运行的线程列表(实际上是队列)主要由调
编辑:让我澄清一下。据我所知,线程包使用就绪列表来标识准备运行的进程,而运行的进程由单独的变量标识。为什么它们不将正在运行的进程包含在ready list数据结构中,并将正在运行的线程放在结构的头部,从而使线程包包罗万象。多处理是否会导致此设计方案出现问题?因为一个线程一次只能在一个处理器(核心)上运行。准备运行的线程列表(实际上是队列)主要由调度器在查找应该运行的线程时使用;如果一个线程已经在一个CPU上运行,那么它不能同时在另一个CPU上运行,因此调度程序不想查看它(在那个时候--稍后某个时候,当它不运行并且有资格再次运行时,它会再次关心它…很简单。谢谢你的想法!