wait_for_completion は wakeup_interruptible とどう違うのですか?
実際問題は、完了チェーンが待機キューとどのように異なるかということです。私には同じコンセプトに見えます
wait_for_completion は wakeup_interruptible とどう違うのですか?
実際問題は、完了チェーンが待機キューとどのように異なるかということです。私には同じコンセプトに見えます
ハーマンの答えに加えて、これら2つの関数は異なるコンテキストで呼び出されます。つまり、待機中のすべてのスレッドwakeup_interruptible()
をウェイクアップし、特定のタスクが完了するまで待機します。これらは私にとって2つの異なるものです。wait_queue
wait_for_completion()
完了構造は、待機キューとロックを内部的に使用します。
複数のスレッドが何らかのイベントを待機しているという非常に一般的な発生シナリオに対処するために、完了構造が導入されました。そのイベントが発生したら、待機中のスレッドの 1 つだけが実行を開始するようにします。
ここで重要なのは、カーネル開発者が待機キューを実装して維持する必要がないことです。これにより、カーネル開発者の生活が楽になります。