System.SyncObjs.TSemaphore.Create
Delphi
constructor Create(UseCOMWait: Boolean = False); overload;
constructor Create(SemaphoreAttributes: PSecurityAttributes; AInitialCount, AMaximumCount: Integer; const Name: string; UseCOMWait: Boolean = False); overload;
constructor Create(DesiredAccess: Cardinal; InheritHandle: Boolean; const Name: string; UseCOMWait: Boolean = False); overload;
C++
__fastcall TSemaphore(bool UseCOMWait)/* overload */;
__fastcall TSemaphore(Winapi::Windows::PSecurityAttributes SemaphoreAttributes, int AInitialCount, int AMaximumCount, const System::UnicodeString Name, bool UseCOMWait)/* overload */;
__fastcall TSemaphore(unsigned DesiredAccess, bool InheritHandle, const System::UnicodeString Name, bool UseCOMWait)/* overload */;
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
constructor | public | System.SyncObjs.pas System.SyncObjs.hpp |
System.SyncObjs | TSemaphore |
説明
TSemaphore オブジェクトをインスタンス化します。
Create を呼び出すと、TSemaphore オブジェクトを作成することができます。
System.SyncObjs.TSemaphore.Create コンストラクタには、3 つのバージョンがあります。
- 第1 コンストラクタでは、初期カウンタ値 1 で、名前のないバイナリ セマフォがを作成します。これは、デフォルト セキュリティ ディスクリプタで作成されます。
- つまり、現在のプロセスの子プロセスは、このセマフォへのハンドルを継承することはできません。これは、基本的に、名前のない TMutex オブジェクトを作成するのと同じこととなります。
- ヒント: UseCOMWait パラメータを設定することで、スレッドがブロックされ、オブジェクトを待機している際に、どんな STA COM 呼び出しでも、このスレッドに呼び戻すことができるようにします。
- 第 2 コンストラクタでは、以下のパラメータ リストに示されたいくつかの属性を持つ名前付きセマフォを作成します。
Parameter |
意味 |
SemaphoreAttributes |
セマフォのセキュリティ属性。SemaphoreAttributes は、_SECURITY_ATTRIBUTES レコードへのポインタ型であり、次のフィールドがあります: nLength、lpSecurityDescriptor、InheritHandle。 nLength フィールドは、_SECURITY_ATTRIBUTES レコードのサイズ(バイト単位)と必ず等しくなければなりません。 lpSecurityDescriptor は、セマフォのセキュリティ ディスクリプタへのポインタです。 最後の InheritHandle は、セマフォのハンドルを子プロセスに継承させる場合に True になります。 |
AInitialCount |
セマフォ カウンタ変数の初期値で、共有リソースの未使用ユニットの初期数を示します。 |
AMaximumCount |
セマフォ カウンタ変数の最大値で、共有リソースの使用可能ユニットの数を示します。 |
Name |
セマフォの名前。名前は大文字/小文字が区別されます。 |
UseCOMWait |
このパラメータを設定すると、スレッドがブロックされてオブジェクトを待っているときでも、任意の STA COM 呼び出しを逆にこのスレッドに対して行うことができます。 |
- 第 3 のコンストラクタでは、名前を指定して既存のセマフォを開くことができます。 各パラメータの意味は以下のとおりです:
Parameter |
意味 |
DesiredAccess |
セマフォに対するアクセスの種類。要求した種類のアクセスが許可されなかった場合、コンストラクタは失敗します。 次の定数の任意の組み合わせにすることができます: SEMAPHORE_ALL_ACCESS、SEMAPHORE_MODIFY_STATE、SYNCHRONIZE、_DELETE、READ_CONTROL、WRITE_DAC、WRITE_OWNER。 |
InheritHandle |
このパラメータを設定すると、子プロセスはハンドルを継承します。 |
Name |
開くセマフォの名前。名前は大文字/小文字が区別されます。 |
UseCOMWait |
このパラメータを設定すると、スレッドがブロックされてオブジェクトを待っているときでも、任意の STA COM 呼び出しを逆にこのスレッドに対して行うことができます。 |