C++ named requirements: SharedTimedMutex (since C++14)
From cppreference.net
C++
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. Sidurationes menor o igual aduration.zero(), intenta obtener la propiedad sin esperar (como si fuera mediantetry_lock()). De lo contrario, esta función se bloquea hasta que el mutex sea adquirido o hasta que pase el tiempo especificado porduration. Retorna dentro dedurationsolo si tiene éxito, pero se le permite fallar en adquirir el mutex incluso si en algún momento durantedurationno 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 deunlock()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. Sitime_pointya pasó, intenta obtener la propiedad sin bloquear (como si fuera mediantetry_lock()). De lo contrario, esta función se bloquea hasta que el mutex sea adquirido o hasta que pase el tiempo especificado portime_point. Retorna antes detime_pointsolo si tiene éxito, pero puede fallar en adquirir el mutex incluso si en algún momento antes detime_pointno 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 deunlock()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 :
|
(C++14)
|
proporciona funcionalidad de exclusión mutua compartida e implementa bloqueo con tiempo de espera
(clase) |