0

boost::condition_variable::notify_one() 関数は、ブロックを解除しているスレッドの実行を自動的に再開しますか?それとも未定義であり、OS がスレッドをスケジュールする方法に依存していますか?

私はスレッド化と、OS がそれらとどのようにやり取りするかについてはあまり詳しくないので、notify_one() の実装に関する洞察は役に立ちます。

ありがとう

4

1 に答える 1

1

Boost は再開もスケジュールも行わず、OS と通信し、OS がマルチタスクを処理します。OS は、将来的にスレッドのブロックを解除する可能性が高いです。保証付きのリアルタイムOSを使用できます(「ブロックされていないスレッドは常にXミリ秒以内に実行を開始する」など)が、Boostはそれを保証しようとしません。

于 2013-10-23T21:38:55.070 に答える