我正在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
的原因是我们知道调度程序将在很短的时间内运行,因此我们不需要再次运行它。
但是,这只是一个优化;如果调度程序确实再次运行,则不会发生任何不良情况。
计时器中断确实可以在任何时间发生,但是仅当调度程序由于其他原因最近未在运行时才需要。