Namespaces
Variants

C++ named requirements: SharedTimedMutex (since C++14)

From cppreference.net
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 . Si duration est inférieure ou égale à duration.zero() , tente d'obtenir la propriété sans attendre (comme avec try_lock() ). Sinon, cette fonction se bloque jusqu'à ce que le mutex soit acquis ou que le temps spécifié par duration s'écoule. Elle retourne dans duration seulement si elle réussit, mais elle peut échouer à acquérir le mutex même si à un moment donné pendant duration il 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érations unlock() 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 le time_point est déjà passé, tente d'obtenir la propriété sans verrouillage (comme avec try_lock() ). Sinon, cette fonction bloque jusqu'à ce que le mutex soit acquis ou jusqu'à ce que le temps spécifié par le time_point soit écoulé. Elle retourne avant le time_point uniquement si elle réussit, mais elle peut échouer à acquérir le mutex même si à un moment donné avant le time_point il 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érations unlock() 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 :

fournit un mécanisme d'exclusion mutuelle partagé et implémente le verrouillage avec un délai d'expiration
(classe)

Voir aussi