SyncObjs.TCriticalSection

From RAD Studio VCL Documentation (Japanese)
Jump to: navigation, search

Contents

Delphi の情報

ファイル SyncObjs.pas

TCriticalSection = class(TSynchroObject)


ユニット: SyncObjs

種類: クラス

継承クラスのメンバ: SyncObjs.TCriticalSection のメンバ

クラスのメソッド: SyncObjs.TCriticalSection のメソッド

クラスのフィールド: SyncObjs.TCriticalSection のフィールド

クラスのコンストラクタとデストラクタ: SyncObjs.TCriticalSection のコンストラクタ

C++ の情報

ファイル SyncObjs.hpp

TCriticalSection = class(TSynchroObject)


ユニット: SyncObjs

種類: クラス

継承クラスのメンバ: SyncObjs.TCriticalSection のメンバ

クラスのメソッド: SyncObjs.TCriticalSection のメソッド

クラスのフィールド: SyncObjs.TCriticalSection のフィールド

クラスのコンストラクタとデストラクタ: SyncObjs.TCriticalSection のコンストラクタ

説明

TCriticalSection は,マルチスレッドアプリケーションのスレッドで,ほかのスレッドがコードのブロックにアクセスするのを一時的に防ぐことができるようにします。


あるスレッドの処理が終了しないうちに,別のスレッドが特定のコードを同時に実行してしまうと,処理が混乱する可能性がある場合,TCriticalSection を使用することで特定の処理をほかのスレッドによる同時実行から保護できます。クリティカルセクションは,一度に 1 つのスレッドだけが入れるゲートのような役割を果たします。ただし,これらはほかのスレッドの同時実行をブロックするため,クリティカルセクションを多用すると性能が著しく低下する場合があります。

関連するすべてのスレッドから参照できないと意味を持たないため,クリティカルセクションはグローバルなスコープを持たなければなりません。クリティカルセクションによって保護されている処理に干渉する動作を持つすべてのスレッドは,必ず Acquire または Enter メソッドを呼び出してから実行する必要があります。クリティカルセクションを使用しないスレッドが存在すると,バグの原因となる場合があります。

関連リンク

Personal tools