在等待队列中唤醒进程

时间:2011-05-29 03:37:14

标签: linux queue kernel sleep wait

我正在编写一个Linux内核模块。 有两个进程A,B和两个等待队列WQA和WQB。目前进程A正在WQA上休息。

当B在WQB上睡觉时我希望A被唤醒,这样当A开始时B已经在等待WQB。我如何原子地唤醒A并将B放在WQB上?

1 个答案:

答案 0 :(得分:2)

使用2个信号量怎么样?

进程A正在信号量A中休眠。然后进程B将提升信号量A并向信号量B请求down(),这将使他进入睡眠状态。再一次,一旦A完成他的工作,它可以提高信号量B(并唤醒B),然后在信号量A上睡觉。