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