critical_section, classe
Mutex non réentrant qui a explicitement connaissance du runtime d'accès concurrentiel.
Syntaxe
class critical_section;
Membres
Typedefs publics
Nom | Description |
---|---|
native_handle_type |
Référence à un objet critical_section . |
Classes publiques
Nom | Description |
---|---|
classe critical_section ::scoped_lock | Wrapper RAII sécurisé d’exception pour un critical_section objet. |
Constructeurs publics
Nom | Description |
---|---|
critical_section | Construit une nouvelle section critique. |
~critical_section Destructeur | Détruit une section critique. |
Méthodes publiques
Nom | Description |
---|---|
lock | Acquiert cette section critique. |
native_handle | Retourne un handle natif spécifique à la plateforme, s’il en existe un. |
try_lock | Tente d’acquérir le verrou sans bloquer. |
try_lock_for | Tente d’acquérir le verrou sans bloquer un nombre spécifique de millisecondes. |
unlock | Déverrouille la section critique. |
Notes
Pour plus d’informations, consultez Structures de données de synchronisation.
Hiérarchie d'héritage
critical_section
Spécifications
En-tête : concrt.h
Espace de noms : concurrency
critical_section
Construit une nouvelle section critique.
critical_section();
~critical_section
Détruit une section critique.
~critical_section();
Notes
On s’attend à ce que le verrou ne soit plus conservé lorsque le destructeur s’exécute. L’autorisation de la section critique à détruire avec le verrou entraîne toujours un comportement non défini.
lock
Acquiert cette section critique.
void lock();
Notes
Il est souvent plus sûr d’utiliser la construction scoped_lock pour acquérir et libérer un critical_section
objet de manière sécurisée.
Si le verrou est déjà conservé par le contexte appelant, une exception improper_lock est levée.
native_handle
Retourne un handle natif spécifique à la plateforme, s’il en existe un.
native_handle_type native_handle();
Valeur de retour
Référence à la section critique.
Notes
Un critical_section
objet n’est pas associé à un handle natif spécifique à la plateforme pour le système d’exploitation Windows. La méthode retourne simplement une référence à l’objet lui-même.
classe critical_section ::scoped_lock
Wrapper RAII sécurisé d’exception pour un critical_section
objet.
class scoped_lock;
scoped_lock ::scoped_lock
Construit un scoped_lock
objet et acquiert l’objet critical_section
passé dans le _Critical_section
paramètre. Si la section critique est conservée par un autre thread, cet appel bloque.
explicit _CRTIMP scoped_lock(critical_section& _Critical_section);
Paramètres
_Critical_section
Section critique à verrouiller.
scoped_lock ::~scoped_lock
Détruit un scoped_lock
objet et libère la section critique fournie dans son constructeur.
~scoped_lock();
try_lock
Tente d’acquérir le verrou sans bloquer.
bool try_lock();
Valeur de retour
Si le verrou a été acquis, la valeur true
; sinon, la valeur false
.
try_lock_for
Tente d’acquérir le verrou sans bloquer un nombre spécifique de millisecondes.
bool try_lock_for(unsigned int _Timeout);
Paramètres
_Timeout
Nombre de millisecondes à attendre avant l’expiration du délai d’attente.
Valeur de retour
Si le verrou a été acquis, la valeur true
; sinon, la valeur false
.
déverrouiller
Déverrouille la section critique.
void unlock();