2

すべてのスレッドが異なるコアで実行されているプロセスがsched_yieldある場合、その場合はどうなりますか? 手放してすぐに再発行しますか?私が見ているsched_yieldのは、スレッドがそれを呼び出す原因とならないため、サイクルをまったく待機しないため、呼び出しがカーネルに送られていないようです。

4

2 に答える 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 に答える