System.SyncObjs.TSemaphore

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