System.NeverSleepOnMMThreadContention
Delphi
NeverSleepOnMMThreadContention: Boolean;
C++
extern DELPHI_PACKAGE bool NeverSleepOnMMThreadContention;
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
variable | public | System.pas System.hpp |
System | System |
説明
スレッド競合時のメモリ マネージャの動作を指定します。
メモリ マネージャは共有リソースなので、アプリケーション内のたくさんのスレッドが 1 つのメモリ操作を同時に実行しようとすると、1 つ以上のスレッドが、他のスレッドが操作を完了するまでの間、操作を保留にして待たなければなりません。この状況をスレッド競合と呼びます。メモリ マネージャ内でスレッド競合が発生すると、デフォルトの動作では、まず、そのスレッドのタイム スライス内の残り時間を放棄します。スレッドが次のタイム スライスに入ったときに、リソースがまだ利用できない場合、メモリ マネージャは、再試行を行う前に、OS の Sleep プロシージャを呼び出します。
この動作は、単一 CPU または デュアル コア CPU を持つマシンに対しては効果的に機能します。また、実行スレッド数と CPU コア数の比率が比較的高い(2:1 より高い)場合にも効果的です。それ以外の場合は、リソースが利用可能になるまで待ち状態ループに入る方が、より高いパフォーマンスが得られる可能性があります。NeverSleepOnMMThreadContention が True の場合、メモリ マネージャはスレッド競合が発生したときに、この代替手段を使用します。NeverSleepOnMMThreadContention のデフォルト値は False です。