等待队列
waitqueue(等待队列)是内核用于管理等待资源的进程,当某个进程获取的资源没有准备好的时候,可以通过调用函数将当前进程添加到等待队列中,然后切换到其他进程继续执行。
当资源准备好,由资源提供方通过调用wake_up函数唤醒等待队列中的所有进程
头文件
#include <linux/wait.h>
定义方法
wait_queue_head_t wq;
init_waitqueue_head(&wq);
阻塞接口
wait_event(wq,condition);
wait_event_timeout(wq,condition,timeout);
wait_event_interruptible(wq,condition);
参数:
wq: 等待队列
condition:条件表达式,当wakeup后,condition为真时唤醒阻塞的进程,为假继续睡眠
唤醒接口
void wake_up(wait_queue_head_t *q);
void wake_up_interruptible(wait_queue_head_t *q);