Namespaces
Variants

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

From cppreference.net
C++ named requirements

Los SharedTimedMutex requisitos extienden los TimedMutex requisitos para incluir el modo de propiedad de bloqueo compartido.

Requisitos

Además, un objeto m de tipo SharedTimedMutex soporta operaciones compartidas temporizadas:

  • La expresión m. try_lock_shared_for ( duration ) tiene las siguientes propiedades
  • Se comporta como una operación atómica.
  • Intenta obtener la propiedad compartida del mutex dentro del período especificado por duration . Si duration es menor o igual a duration.zero() , intenta obtener la propiedad sin esperar (como si fuera mediante try_lock() ). De lo contrario, esta función se bloquea hasta que el mutex sea adquirido o hasta que pase el tiempo especificado por duration . Retorna dentro de duration solo si tiene éxito, pero se le permite fallar en adquirir el mutex incluso si en algún momento durante duration no estaba siendo poseído por otro hilo. En cualquier caso, retorna true si el mutex fue adquirido y false en caso contrario.
  • Si try_lock_shared_for(duration) tiene éxito, las operaciones previas de unlock() en el mismo objeto sincronizan-con esta operación (equivalente a liberación-adquisición std::memory_order ).
  • El comportamiento es indefinido si el hilo que llama ya posee el mutex en cualquier modo.
  • Puede lanzarse una excepción por el reloj, punto temporal o duración durante la ejecución (los relojes, puntos temporales y duraciones proporcionados por la biblioteca estándar nunca lanzan excepciones).
  • Si se lanza una excepción, el bloqueo compartido no es adquirido.
  • La expresión m. try_lock_shared_until ( time_point ) tiene las siguientes propiedades
  • Se comporta como una operación atómica.
  • Intenta obtener la propiedad compartida del mutex dentro del tiempo restante hasta time_point . Si time_point ya pasó, intenta obtener la propiedad sin bloquear (como si fuera mediante try_lock() ). De lo contrario, esta función se bloquea hasta que el mutex sea adquirido o hasta que pase el tiempo especificado por time_point . Retorna antes de time_point solo si tiene éxito, pero puede fallar en adquirir el mutex incluso si en algún momento antes de time_point no era propiedad de otro hilo. En cualquier caso, retorna true si el mutex fue adquirido y false en caso contrario.
  • Si try_lock_shared_until(time_point) tiene éxito, las operaciones previas de unlock() en el mismo objeto sincronizan-con esta operación (equivalente a liberación-adquisición std::memory_order ).
  • El comportamiento es indefinido si el hilo que llama ya posee el mutex en cualquier modo.
  • Puede lanzarse una excepción por el reloj, punto de tiempo o duración durante la ejecución (los relojes, puntos de tiempo y duraciones proporcionados por la biblioteca estándar nunca lanzan excepciones).
  • Si se lanza una excepción, el bloqueo compartido no se adquiere.

Biblioteca estándar

Los siguientes tipos de la biblioteca estándar satisfacen los requisitos de SharedTimedMutex :

proporciona funcionalidad de exclusión mutua compartida e implementa bloqueo con tiempo de espera
(clase)

Véase también