C++ named requirements: SharedTimedMutex (since C++14)
From cppreference.net
C++
C++ named requirements
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Les SharedTimedMutex exigences étendent les TimedMutex exigences pour inclure le mode de propriété de verrou partagé.
Exigences
De plus, un objet
m
de type
SharedTimedMutex
prend en charge les opérations partagées temporisées :
- L'expression m. try_lock_shared_for ( duration ) possède les propriétés suivantes
-
- Se comporte comme une opération atomique.
-
Tente d'obtenir la propriété partagée du mutex dans la durée spécifiée par
duration. Sidurationest inférieure ou égale àduration.zero(), tente d'obtenir la propriété sans attendre (comme avectry_lock()). Sinon, cette fonction se bloque jusqu'à ce que le mutex soit acquis ou que le temps spécifié pardurations'écoule. Elle retourne dansdurationseulement si elle réussit, mais elle peut échouer à acquérir le mutex même si à un moment donné pendantdurationil n'était pas détenu par un autre thread. Dans tous les cas, elle retourne true si le mutex a été acquis et false sinon. -
Si
try_lock_shared_for(duration)réussit, les opérationsunlock()antérieures sur le même objet synchronize-with cette opération (équivalent à release-acquire std::memory_order ). - Le comportement est indéfini si le thread appelant possède déjà le mutex dans n'importe quel mode.
- Une exception peut être levée par l'horloge, le point temporel ou la durée pendant l'exécution (les horloges, points temporels et durées fournis par la bibliothèque standard ne lèvent jamais d'exception).
- Si une exception est levée, le verrou partagé n'est pas acquis.
- L'expression m. try_lock_shared_until ( time_point ) possède les propriétés suivantes
-
- Se comporte comme une opération atomique.
-
Tente d'obtenir la propriété partagée du mutex dans le temps restant jusqu'au
time_point. Si letime_pointest déjà passé, tente d'obtenir la propriété sans verrouillage (comme avectry_lock()). Sinon, cette fonction bloque jusqu'à ce que le mutex soit acquis ou jusqu'à ce que le temps spécifié par letime_pointsoit écoulé. Elle retourne avant letime_pointuniquement si elle réussit, mais elle peut échouer à acquérir le mutex même si à un moment donné avant letime_pointil n'était pas détenu par un autre thread. Dans tous les cas, elle retourne true si le mutex a été acquis et false sinon. -
Si
try_lock_shared_until(time_point)réussit, les opérationsunlock()antérieures sur le même objet synchronize-with cette opération (équivalent à release-acquire std::memory_order ). - Le comportement est indéfini si le thread appelant possède déjà le mutex dans n'importe quel mode.
- Une exception peut être levée par l'horloge, le point temporel ou la durée pendant l'exécution (les horloges, points temporels et durées fournis par la bibliothèque standard ne lèvent jamais d'exception).
- Si une exception est levée, le verrou partagé n'est pas acquis.
Bibliothèque standard
Les types de bibliothèque standard suivants satisfont aux exigences SharedTimedMutex :
|
(C++14)
|
fournit un mécanisme d'exclusion mutuelle partagé et implémente le verrouillage avec un délai d'expiration
(classe) |