0

我知道当一个任务运行时,它被排入运行队列。当它休眠时,它会从运行队列中出列。但是有睡眠任务的队列吗?我在源代码中没有看到这一点。

即使我要创建这样一个队列,我怎么知道任务何时被终止并应该从睡眠队列中删除?

谁能给我一个提示?谢谢,

4

1 回答 1

1

在 Linux 中,阻塞(休眠)任务在称为等待队列的结构中排队。每个事件(或对象)都存在一个等待队列,可以等待。

因此,没有单个等待队列(或每个内核),而是每个事件等待队列。内核代码明确地将任务放在等待队列中,并在特定事件到达时将其删除。例如,请参阅 wait_event() 内核 API。

于 2012-07-09T05:20:03.080 回答