Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Multithreading 为什么不使用可运行线程的完整列表,而不仅仅是可运行但未运行的线程?_Multithreading_List_Multiprocessing_Ready - Fatal编程技术网

Multithreading 为什么不使用可运行线程的完整列表,而不仅仅是可运行但未运行的线程?

Multithreading 为什么不使用可运行线程的完整列表,而不仅仅是可运行但未运行的线程?,multithreading,list,multiprocessing,ready,Multithreading,List,Multiprocessing,Ready,我正在考虑多处理背后的概念,并试图找出为什么使用包含所有未运行的可运行线程的就绪列表,而不是数据结构头部为运行线程的所有可运行线程的列表 谢谢你的意见 编辑:让我澄清一下。据我所知,线程包使用就绪列表来标识准备运行的进程,而运行的进程由单独的变量标识。为什么它们不将正在运行的进程包含在ready list数据结构中,并将正在运行的线程放在结构的头部,从而使线程包包罗万象。多处理是否会导致此设计方案出现问题?因为一个线程一次只能在一个处理器(核心)上运行。准备运行的线程列表(实际上是队列)主要由调

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

谢谢你的意见


编辑:让我澄清一下。据我所知,线程包使用就绪列表来标识准备运行的进程,而运行的进程由单独的变量标识。为什么它们不将正在运行的进程包含在ready list数据结构中,并将正在运行的线程放在结构的头部,从而使线程包包罗万象。多处理是否会导致此设计方案出现问题?

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

很简单。谢谢你的想法!