我正在浏览主要的调度功能:__schedule()
并找到了一个代码片段:
if (!preempt && prev->state) {
if (unlikely(signal_pending_state(prev->state, prev))) {
prev->state = TASK_RUNNING;
...
现在,如果一个进程通过将自己保留在等待队列中来自愿抢占自己,为什么进程的状态再次变为TASK_RUNNING
?
我正在浏览主要的调度功能:__schedule()
并找到了一个代码片段:
if (!preempt && prev->state) {
if (unlikely(signal_pending_state(prev->state, prev))) {
prev->state = TASK_RUNNING;
...
现在,如果一个进程通过将自己保留在等待队列中来自愿抢占自己,为什么进程的状态再次变为TASK_RUNNING
?