System.SyncObjs.TSemaphore.Create

De RAD Studio API Documentation
Aller à : navigation, rechercher

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.

Le constructeur System.SyncObjs.TSemaphore.Create a trois versions.

  • La première version du constructeur crée un sémaphore binaire sans nom avec une valeur de compteur initiale à un, créée par 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. Cela équivaut à créer un objet TMutex sans nom.
Conseil: 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 peuvent être effectués dans ce thread.
  • La seconde 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 du 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.

  • La troisième 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.

Voir aussi