System.SyncObjs.TSemaphore.Create

Aus RAD Studio API Documentation
Wechseln zu: Navigation, Suche

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.



Siehe auch