wait_for_completion 与 wakeup_interruptible 有何不同?
实际上问题是完成链与等待队列有何不同?对我来说它看起来是相同的概念
wait_for_completion 与 wakeup_interruptible 有何不同?
实际上问题是完成链与等待队列有何不同?对我来说它看起来是相同的概念
加上哈曼的回答,我还要说这两个函数是在不同的上下文中调用的:wakeup_interruptible()
将唤醒所有等待 a 的线程wait_queue
,而wait_for_completion()
将等待特定任务完成。这对我来说是两件不同的事情。
完成结构内部使用等待队列和锁。
引入完成结构是为了解决一个非常常见的场景,即多个线程正在等待某个事件。一旦该事件发生,您只希望一个等待线程开始运行。
这里的关键是内核开发人员不必实现和维护等待队列,这使内核开发人员的生活变得轻松。