4.2. スレッドの同期
sched_yield 機能は、優先度の低いスレッドを実行できる同期メカニズムです。このタイプの要求は、適切に作成されていないアプリケーション内から発行すると失敗する可能性があります。
優先度が高いスレッドは sched_yield() を呼び出して、他のスレッドに実行の機会を与えることができます。呼び出しプロセスは、その優先度で実行されているプロセスのキューの末尾に移動します。これは、同じ優先度で他のプロセスが実行していない状況で発生すると、呼び出しプロセスの実行は継続されます。プロセスの優先度が高い場合は、ビジーループが発生し、マシンが使用できなくなる可能性があります。
SCHED_DEADLINE タスクが sched_yield() を呼び出すと、設定された CPU が放棄され、残りのランタイムには次の期間まで直ちにスロットリングが適用されます。sched_yield() の動作により、タスクは次の期間の開始時に起動できます。
スケジューラーは、実際に実行する他のスレッドがあるかどうかを判別できます。リアルタイムタスクで sched_yield() は使用しないでください。
手順
sched_yield()関数を呼び出すには、以下のコードを実行します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow SCHED_DEADLINEタスクには、次の期間 (次のループ実行を開始する) まで、競合ベースの検索 (CBS) アルゴリズムによってスロットリングが適用されます。