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 */;
Propriétés
Type | Visibilité | Source | Unité | Parent |
---|---|---|---|---|
constructor | public | System.SyncObjs.pas System.SyncObjs.hpp |
System.SyncObjs | TSemaphore |
Description
Instancie un objet TSemaphore.
Appelez Create pour créer un objet TSemaphore.
La première version du constructeur crée un sémaphore binaire sans nom avec une valeur de compteur initiale à un. En outre, le sémaphore est créé avec le descripteur de sécurité par défaut. Cela signifie que les processus enfant du processus en cours ne peuvent pas hériter du handle de ce sémaphore. C'est pratiquement équivalent à la création d'un objet TMutex sans nom. Définissez le paramètre UseCOMWait pour garantir que lorsqu'un thread est bloqué et en attente de l'objet, tous les rappels STA COM (apartment à thread unique) peuvent toujours être effectués dans ce thread.
La seconde version du constructeur permet l'ouverture d'un sémaphore existant, identifié par son nom. Les paramètres ont la signification suivante :
Paramètre |
Signification |
DesiredAccess |
Le type d'accès au sémaphore. Le constructeur échoue si le type d'accès demandé n'est pas autorisé. Il peut être représenté par toute combinaison des constantes suivantes : SEMAPHORE_ALL_ACCESS, SEMAPHORE_MODIFY_STATE, SYNCHRONIZE, _DELETE, READ_CONTROL, WRITE_DAC, WRITE_OWNER. |
InheritHandle |
Définissez ce paramètre pour que les processus enfant héritent du handle. |
Name |
Le nom du sémaphore à ouvrir. Les noms sont sensibles à la casse. |
UseCOMWait |
Définissez ce paramètre pour garantir que lorsqu'un thread est bloqué et en attente de l'objet, tous les rappels STA COM peuvent toujours être effectués dans ce thread. |
La troisième version du constructeur crée un sémaphore nommé avec plusieurs attributs, donnés parmi la liste de paramètres suivante :
Paramètre |
Signification |
SemaphoreAttributes |
Les attributs de sécurité du sémaphore. SemaphoreAttributes est un type de pointeur sur un enregistrement _SECURITY_ATTRIBUTES, avec les champs suivants : nLength, lpSecurityDescriptor, InheritHandle. Le champ nLength doit toujours être égal à la taille, en octets, de l'enregistrement _SECURITY_ATTRIBUTES. lpSecurityDescriptor est un pointeur sur le descripteur de sécurité du sémaphore. Enfin, InheritHandle vaut True si le handle du sémaphore doit être hérité par les processus enfant. |
AInitialCount |
La valeur initiale de la variable compteur du sémaphore, donnant le nombre initial d'unités libres de la ressource partagée. |
AMaximumCount |
La valeur maximale de la variable compteur du sémaphore, donnant le nombre d'unités disponibles de la ressource partagée. |
Name |
Le nom du sémaphore. Les noms sont sensibles à la casse. |
UseCOMWait |
Définissez ce paramètre pour garantir que lorsqu'un thread est bloqué et en attente de l'objet, tous les rappels STA COM peuvent toujours être effectués dans ce thread. |