すべてのスレッドが異なるコアで実行されているプロセスがsched_yield
ある場合、その場合はどうなりますか? 手放してすぐに再発行しますか?私が見ているsched_yield
のは、スレッドがそれを呼び出す原因とならないため、サイクルをまったく待機しないため、呼び出しがカーネルに送られていないようです。
質問する
2150 次
2 に答える
4
Linux カーネルに関する限り、1 つのコアは 1 つの CPU であるためsched_yield
、呼び出し元のスレッドは CPU を放棄しますが、スレッドがキュー内の唯一のスレッドである場合、サイクルは待機しません。
したがって、現在のコアで待機しているスレッドがない場合、あなたの場合はすぐに戻ります。sched_yield
複数の CPU でのスレッドの実行方法を制御するように設計されてsched_yield
いないことに注意してください。
于 2013-04-25T13:58:20.733 に答える
3
マニュアルページには次のように書かれています:
呼び出しスレッドがその時点で最高優先度リストにある唯一のスレッドである場合、sched_yield() への呼び出し後も引き続き実行されます。
したがって、実行する重要なものが何もない場合、関数は基本的に何もしません。
于 2013-04-25T13:58:15.790 に答える