我正在Linux Device Drivers 3rd Edition书中举一个例子:

if (temp =  = 0)
    wake_up_interruptible_sync(&scull_w_wait); /* awake other uid's */
return 0;

作者指出:



我不明白为什么在这种情况下使用wake_up_interruptible_sync会更好。作者暗示此调用将阻止重新调度(在调用中确实会阻止这种重新调度),但是在wake_up_interruptible_sync返回之后,难道另一个线程就不能只在return 0行之前接管CPU的控制吗?

那么,如果线程可以在每次调用之后都控制CPU,则与典型的wake_up_interruptible_sync相比,调用wake_up_interruptible有什么区别?

最佳答案

使用_sync的原因是我们知道调度程序将在很短的时间内运行,因此我们不需要再次运行它。
但是,这只是一个优化;如果调度程序确实再次运行,则不会发生任何不良情况。

计时器中断确实可以在任何时间发生,但是仅当调度程序由于其他原因最近未在运行时才需要。

09-06 02:42