SyncObjs.TSemaphore
Contents |
Delphi の情報
ファイル SyncObjs.pas
TSemaphore = class(THandleObject)
ユニット: SyncObjs
種類: クラス
継承クラスのメンバ: SyncObjs.TSemaphore のメンバ
クラスのメソッド: SyncObjs.TSemaphore のメソッド
クラスのコンストラクタとデストラクタ: SyncObjs.TSemaphore のコンストラクタ
C++ の情報
ファイル SyncObjs.hpp
TSemaphore = class(THandleObject)
ユニット: SyncObjs
種類: クラス
継承クラスのメンバ: SyncObjs.TSemaphore のメンバ
クラスのコンストラクタとデストラクタ: SyncObjs.TSemaphore のコンストラクタ
説明
TSemaphore は、共通リソースの共有に関して、スレッドの並行実行を管理する同期プリミティブ型です。
TSemaphore は、共有リソースに安全にアクセスする必要のあるマルチスレッド アプリケーションで使用します。
セマフォごとに 1 つのカウンタ変数が関連付けられています。この変数は、現在使われていない共有リソースのユニット数を持っています。このカウンタは、スレッドがそのセマフォをロックすると数が減り、スレッドがセマフォを解放すると数が増えます。
スレッドがセマフォをロックしようとしたときにカウンタの値が nil であれば、スレッドはセマフォの待ち行列に追加されます。カウンタの値がゼロでなくなればすぐに、セマフォ待ち行列の先頭にいるスレッドがセマフォをロックします。
TSemaphore クラスのインスタンスを作成するときに、使われていない共有リソースの最初のユニット数を指定することができます。これが実質的にセマフォ カウンタ変数の初期値となります。
その他に、利用可能な共有リソースのユニット数は、TSemaphore クラス コンストラクタの AMaximumCount パラメータで指定することができます。
メモ: 利用可能な共有リソースのユニット数が 1 である場合、TSemaphore はバイナリ セマフォと呼ばれ、基本的に TMutex と同等のものになります。