【发布时间】:2013-04-24 20:23:55
【问题描述】:
我正在关注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 会更好。作者暗示这个调用将阻止重新调度——它确实在调用中阻止了——但是在wake_up_interruptible_sync返回之后,另一个线程不能在return 0行之前控制CPU吗?
如果线程在每次调用后都可以控制 CPU,那么调用 wake_up_interruptible_sync 与典型的 wake_up_interruptible 有什么区别?
【问题讨论】:
标签: c linux multithreading linux-kernel linux-device-driver