标签: linux queue kernel sleep wait
我正在编写一个Linux内核模块。 有两个进程A,B和两个等待队列WQA和WQB。目前进程A正在WQA上休息。
当B在WQB上睡觉时我希望A被唤醒,这样当A开始时B已经在等待WQB。我如何原子地唤醒A并将B放在WQB上?
答案 0 :(得分:2)
使用2个信号量怎么样?
进程A正在信号量A中休眠。然后进程B将提升信号量A并向信号量B请求down(),这将使他进入睡眠状态。再一次,一旦A完成他的工作,它可以提高信号量B(并唤醒B),然后在信号量A上睡觉。