linux 等待队列
inux内核中等待队列 在 Linux 内核中等待队列有很多用途,可用于中断处理、进程同步及定时。我们在这里只说,进程经常必须等待某些事件的发生。等待队列实现了在事件上的条件等待: 希望等待特定事件的进程把自己放进合适的等待队列,并放弃控制全。因此,等待队列表示一组睡眠的进程,当某一条件为真时,由内核唤醒它们。 等待队列由循环链表实现,其元素包括指向进程描述符的指针。每个等待队列都有一个等待队列头(wait queue head),等待队列头是一个类型为wait_queue_head_t的 数据结构 (1)定义等待队列头(相关内容可以在linux/include/wait.h中找到) 等待队列头结构体的定义: struct __wait_queue_head { spinlock_t lock; //自旋锁变量,用于在对等待队列头 struct list_head task_list; // 指向等待队列的list_head }; typedef struct __wait_queue_head wait_queue_head_t ; 使用等待队列时首先需要定义一个wait_queue_head,这可以通过DECLARE_WAIT_QUEUE_HEAD宏来完成,这是静态定义的方法。该宏会定义一个wait_queue_head,并且初始化结构中的锁以及等待队列。当然