System.Classes.TThread.Yield
Delphi
class procedure Yield; static;
C++
static void __fastcall Yield();
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
procedure function |
public | System.Classes.pas System.Classes.hpp |
System.Classes | TThread |
説明
実行権を他のスレッドに渡します。
Yield は、現在のプロセッサ上で次にスケジュールされているスレッドに、実行権を渡せることを、システムに通知します。 オペレーティング システムは、次のスレッドを選択します。
メモ: メソッドは、呼び出しスレッドを実行するプロセッサに制限されます。
Yield はシステム全体のものです。 OS がどのスレッドを実行するか決定し、それが同じプロセスからである必要はありません。 すべてのスレッドが、プロセスに関係なく優先度に応じてスケジュールされます。 スレッドのスケジューリングはダイナミック プロセスであり、サービスやカーネル スレッドなど、システム上で実行されている他のすべてのスレッドによって影響を受けるため、 決して予想できるようなある種の「パターン」になることはありません。 実際 OS は、あるスレッドについてそれがしばらくスケジュールされていないのを検知した場合、自動的かつ動的にそのスレッドの優先度の変更を行います。 これにより、スレッドの飢餓状態(starvation)とロック コンボイ(lock-convoy)に対する制御が支援されます。 ロック コンボイは、あるスレッドが、ロックを要求する新しいタスク/スレッドがさらに入ってくるのよりも長くロックを確保していた場合に、発生する可能性があります。