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 */;
Eigenschaften
Typ | Sichtbarkeit | Quelle | Unit | Übergeordnet |
---|---|---|---|---|
constructor | public | System.SyncObjs.pas System.SyncObjs.hpp |
System.SyncObjs | TSemaphore |
Beschreibung
Instantiiert ein TSemaphore-Objekt.
Mit Create wird ein TSemaphore-Objekt erstellt.
Der Konstruktor System.SyncObjs.TSemaphore.Create hat drei Versionen:
- Die erste Version des Konstruktors erstellt ein unbenanntes binäres Semaphor mit einem Ausgangszählerwert von eins, das mit dem Standardsicherheitsdeskriptor erstellt wird.
- Das bedeutet, dass die untergeordneten Prozesse des aktuellen Prozesses das Handle auf dieses Semaphor nicht erben können. Im Grunde ist das gleichbedeutend mit dem Erstellen eines unbenannten TMutex-Objekts.
- Tipp: Legen Sie den Parameter UseCOMWait fest, um sicherzustellen, dass – wenn ein Thread blockiert ist und auf das Objekt wartet – STA COM-Aufrufe zurück in diesen Thread geleitet werden können.
- Die zweite Version des Konstruktors erstellt ein benanntes Semaphor mit mehreren Attributen, die in der folgenden Parameterliste angegeben sind:
Parameter |
Bedeutung |
SemaphoreAttributes |
Die Sicherheitsattribute des Semaphors. SemaphoreAttributes ist ein Zeigertyp auf einen _SECURITY_ATTRIBUTES-Record mit den folgenden Feldern: nLength, lpSecurityDescriptor, InheritHandle. Das Feld nLength sollte immer dieselbe Größe in Byte wie der _SECURITY_ATTRIBUTES-Record haben. lpSecurityDescriptor ist ein Zeiger auf den Sicherheitsdeskriptor des Semaphors. InheritHandle ist True, wenn das Handle auf das Semaphor von untergeordneten Prozessen geerbt werden soll. |
AInitialCount |
Der Anfangswert der Zählervariable des Semaphors, die die ursprüngliche Anzahl der freien Units der gemeinsamen Ressource enthält. |
AMaximumCount |
Der Maximalwert der Zählervariable des Semaphors, die die Anzahl der verfügbaren Units der gemeinsamen Ressource enthält. |
Name |
Der Name des Semaphors. Bei Namen wird die Groß- und Kleinschreibung berücksichtigt. |
UseCOMWait |
Legen Sie diesen Parameter fest, um sicherzustellen, dass – wenn ein Thread blockiert ist und auf das Objekt wartet – STA COM-Aufrufe weiterhin zurück in diesen Thread geleitet werden können. |
- Die zweite Version des Konstruktors ermöglicht das Öffnen eines vorhandenen Semaphors anhand seines Namens. Die Parameter haben die folgende Bedeutung:
Parameter |
Bedeutung |
DesiredAccess |
Der Zugriffstyp auf das Semaphor. Der Konstruktor schlägt fehl, wenn der angeforderte Zugriffstyp nicht zulässig ist. Möglich ist jede Kombination der folgenden Konstanten: SEMAPHORE_ALL_ACCESS, SEMAPHORE_MODIFY_STATE, SYNCHRONIZE, _DELETE, READ_CONTROL, WRITE_DAC, WRITE_OWNER. |
InheritHandle |
Legen Sie diesen Parameter für die untergeordneten Prozesse fest, die das Handle erben sollen. |
Name |
Der Name des zu öffnenden Semaphors. Bei Namen wird die Groß- und Kleinschreibung berücksichtigt. |
UseCOMWait |
Legen Sie diesen Parameter fest, um sicherzustellen, dass – wenn ein Thread blockiert ist und auf das Objekt wartet – STA COM-Aufrufe weiterhin zurück in diesen Thread geleitet werden können. |