Linux kernel 等待完成与唤醒有什么不同

Linux kernel 等待完成与唤醒有什么不同,linux-kernel,linux-device-driver,Linux Kernel,Linux Device Driver,等待完成和唤醒有什么不同 实际上,问题是完成链与等待队列有何不同? 在我看来,完成结构内部使用等待队列和锁的概念是相同的 引入完成结构是为了解决一个非常常见的场景,其中多个线程正在等待某个事件。一旦该事件发生,您只希望等待的线程中的一个开始运行 这里的关键是,内核开发人员不必实现和维护等待队列,这使内核开发人员的生活变得简单。再加上Harman answer,我还想说这两个函数是在不同的上下文中调用的:wakeup\u interruptable()将唤醒等待队列中的所有线程,而等待队列完成()

等待完成和唤醒有什么不同

实际上,问题是完成链与等待队列有何不同?
在我看来,完成结构内部使用等待队列和锁的概念是相同的

引入完成结构是为了解决一个非常常见的场景,其中多个线程正在等待某个事件。一旦该事件发生,您只希望等待的线程中的一个开始运行


这里的关键是,内核开发人员不必实现和维护等待队列,这使内核开发人员的生活变得简单。

再加上Harman answer,我还想说这两个函数是在不同的上下文中调用的:
wakeup\u interruptable()
唤醒
等待队列中的所有线程,而
等待队列完成()
等待直到特定任务完成。这对我来说是两件不同的事情