我正在关注Jeffrey Richter通过C#编写的CLR书。关于I / O请求优先级,它说:
由于I / O请求通常需要一些时间来处理,因此可能 低优先级线程可能会由于挂起而严重影响系统的响应能力 高优先级的线程,这会阻止他们完成工作
但是,Microsoft关于Scheduling Threads 的文档指出:
如果较高优先级的线程变为可运行状态,则会抢占较低优先级的线程,并允许较高优先级的线程再次执行
即使Jeff自己的书中也说明了有关线程调度的以下内容:
较高优先级的线程始终抢占较低优先级的线程,无论较低优先级是什么 线程正在执行。例如,如果优先级为5的线程正在运行,并且系统确定 较高优先级的线程已准备好运行,系统会立即挂起较低优先级的线程(即使是 (如果它位于时间片的中间),然后将CPU分配给优先级更高的线程,该线程将获得完整的 时间片。
基于上述了解,我了解到,每当执行I / O操作的低优先级线程正在运行,而高优先级线程处于可运行状态时,将执行高优先级线程暂时挂起I / O线程。 低优先级I / O线程如何挂起高优先级线程?