gpt4 book ai didi

c - Linux内核中wake_up_sync/wake_up_interruptible_sync的用途

转载 作者:太空狗 更新时间:2023-10-29 12:05:12 25 4
gpt4 key购买 nike

我正在关注 Linux Device Drivers 3rd Edition 中的示例书:

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

作者说:

Here is an example of where calling wake_up_interruptible_sync makes sense. When we do the wakeup, we are just about to return to user space, which is a natural scheduling point for the system. Rather than potentially reschedule when we do the wakeup, it is better to just call the "sync" version and finish our job.

我不明白为什么在这种情况下使用 wake_up_interruptible_sync 会更好。作者暗示这个调用将阻止重新安排——它确实在调用中阻止了——但是在 wake_up_interruptible_sync 返回之后,另一个线程不能在 之前控制 CPU返回 0 行?

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

最佳答案

使用_sync 的原因是我们知道调度程序将在短时间内运行,因此我们不需要运行它第二次。然而,这只是一种优化;如果调度程序确实再次运行,则不会发生任何坏事。

定时器中断确实可以在任何时候发生,但只有当调度程序由于其他原因最近没有运行时才需要它。

关于c - Linux内核中wake_up_sync/wake_up_interruptible_sync的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16201468/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com