事件等待隊列一般用於linux驅動的異步通信,也可以叫做申請設備使用權等待隊列。當多個進程去操作一個設備時,這個時候一般要用到事件隊列。
1、不可中斷睡眠:
wait_event(queue, condition)
wait_event_interruptible(queue, condition)
兩個函數只有在condition變為true才能喚醒,否則一直睡眠,即是調用wake_up()也不能喚醒。zzzzzzzzzzzz
2、可中斷睡眠
wait_event_timeout(queue, condition, timeout)
wait_event_interruptible_timeout(queue, condition, timeout)
兩個函數在condition變為true或wake_up_interruptible()被調用都能被喚醒。
3,喚醒函數:
void wake_up(wait_queue_head_t *queue); //喚醒所有
void wake_up_interruptible(wait_queue_head_t *queue); //喚醒interruptible