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.
Die erste Version des Konstruktors erstellt ein unbenanntes binäres Semaphor mit einem Ausgangszählerwert von eins. Das Semaphor wird auch mit dem Standard-Sicherheitsdeskriptor erstellt. 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. Setzen Sie den Parameter UseCOMWait, um sicherzustellen, dass – wenn ein Thread blockiert ist und auf das Objekt wartet – STA (Single-Threaded Apartment) COM-Aufrufe weiterhin zurück in diesen Thread gemacht 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 |
Setzen Sie diesen Parameter für die untergeordnete Prozesse, die das Mutex-Handle erben sollen. |
Name |
Der Name des zu öffnenden Semaphors. Namen berücksichtigen die Groß- und Kleinschreibung. |
UseCOMWait |
Setzen Sie diesen Parameter, um sicherzustellen, dass – wenn ein Thread blockiert ist und auf das Objekt wartet – STA COM-Aufrufe weiterhin zurück in diesen Thread gemacht werden können. |
Die dritte Version des Konstruktors erstellt ein benanntes Semaphor mit mehreren Attributen, die in der folgenden Parameterliste angegeben werden:
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. Namen berücksichtigen die Groß- und Kleinschreibung. |
UseCOMWait |
Setzen Sie diesen Parameter, um sicherzustellen, dass – wenn ein Thread blockiert ist und auf das Objekt wartet – STA COM-Aufrufe weiterhin zurück in diesen Thread gemacht werden können. |