System.SyncObjs.TCriticalSection
Delphi
TCriticalSection = class(TSynchroObject)
C++
class PASCALIMPLEMENTATION TCriticalSection : public TSynchroObject
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
class | public | System.SyncObjs.pas System.SyncObjs.hpp |
System.SyncObjs | System.SyncObjs |
説明
TCriticalSection により、マルチスレッド アプリケーションにおいて、あるスレッドが、コードのブロックへ他のスレッドがアクセスするのを一時的に防ぐことができます。
TCriticalSection を使用すると、オペレーションが完了しないうちに、別のスレッドが特定のコードのセクションを実行すると、壊れる可能性があるオペレーションを守ることができます。クリティカル セクションは、1 度に 1 つのスレッドだけか入れるようにするゲートのような役割をします。これらは、他のスレッドの実行をブロックするため、クリティカル セクションの多用は、パフォーマンスを著しく低下させる可能性があります。
クリティカル セクションは、すべてのスレッドから利用できなければならないため、スコープ内でグローバルである必要があります。各スレッドにおいて、クリティカル セクションによって守られているオペレーションを干渉する可能性のあるアクションは、必ず Acquire または Enter メソッドを呼び出した後に実行させます。関連オペレーションに対してクリティカル セクションを使用しないスレッドは、バグの原因となる場合があります。