唤醒等待队列中的进程
我正在编写一个 Linux 内核模块。 有两个进程A、B和两个等待队列WQA和WQB。目前进程 A 正在 WQA 上休眠。
我希望当 B 在 WQB 上休眠时 A 被唤醒,以便当 A 启动时 B 已经在 WQB 上等待。我怎样才能自动唤醒 A 并将 B 放在 WQB 上?
I am writing a Linux kernel module.
There are two processes A, B and two wait queues WQA and WQB. At the moment process A is sleeping on WQA.
I want A to be woken up when B sleeps on WQB so that when A starts B is already waiting on WQB. How can i atomically wake A and put B on WQB?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用 2 个信号量怎么样?
进程 A 正在信号量 A 上休眠。然后进程 B 将提升信号量 A 并请求信号量 B 上的 down(),这将使他休眠。同样,一旦 A 完成其工作,它就可以提升信号量 B(并唤醒 B),然后在信号量 A 上休眠。
What about using 2 semaphores?
Process A is sleeping at semaphore A. Then process B will raise the semaphore A and request down() on semaphore B which will make him sleep. Again, once A finishes his job, it can raise semaphore B (and wake up B), and then go sleep on semaphore A.