低优先级I / O线程可以阻止高优先级线程吗?

时间:2018-11-25 21:21:45

标签: .net multithreading clr

我正在关注Jeffrey Richter通过C#编写的CLR书。关于I / O请求优先级,它说:

  

由于I / O请求通常需要一些时间来处理,因此可能   低优先级线程可能会由于挂起而严重影响系统的响应能力   高优先级的线程,这会阻止他们完成工作

但是,Microsoft关于Scheduling Threads 的文档指出:

  

如果较高优先级的线程变为可运行状态,则会抢占较低优先级的线程,并允许较高优先级的线程再次执行

即使Jeff自己的书中也说明了有关线程调度的以下内容:

  

较高优先级的线程始终抢占较低优先级的线程,无论较低优先级是什么   线程正在执行。例如,如果优先级为5的线程正在运行,并且系统确定   较高优先级的线程已准备好运行,系统会立即挂起较低优先级的线程(即使是   (如果它位于时间片的中间),然后将CPU分配给优先级更高的线程,该线程将获得完整的   时间片。

基于上述了解,我了解到,每当执行I / O操作的低优先级线程正在运行,而高优先级线程处于可运行状态时,将执行高优先级线程暂时挂起I / O线程。 低优先级I / O线程如何挂起高优先级线程

0 个答案:

没有答案