我正在阅读有关 SOS_SCHEDULER_YIELD 的内容,并且在阅读了大量有关内部结构(如时钟间隔、线程和量子)的内容后,我对它的工作原理有了很好的理解。
但是还有一个基本问题困扰着我——为什么工作线程会在 4ms 量子之后自愿让出处理器?根据我的理解,因为它是非抢先的:
如果它正在运行,它应该完成任务
如果它需要资源,它将返回等待队列。
这不像线程每 4 毫秒在 RUNNING 和 RUNNABLE 状态之间跳转,对吧?但正如我们所知,在某些情况下它会产生效果,我不确定为什么会发生这种情况。在决定将其从 RUNNING 状态中删除时,线程发生了什么。
编辑:我意识到有很多关于这种等待类型的问题,但我现在不考虑故障排除,而是我想了解什么可以使假设的运行线程产生 CPU。