Namespaces
Variants

std:: shared_lock

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
(C++11)
(C++11)
shared_lock
(C++14)
(C++11)
(C++11)
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
Definido en el encabezado <shared_mutex>
template < class Mutex >
class shared_lock ;
(desde C++14)

La clase shared_lock es un envoltorio de propiedad de mutex compartido de propósito general que permite el bloqueo diferido, el bloqueo temporizado y la transferencia de propiedad del bloqueo. Bloquear un shared_lock bloquea el mutex compartido asociado en modo compartido (para bloquearlo en modo exclusivo, std::unique_lock puede ser utilizado).

La clase shared_lock es movible, pero no copiable – cumple con los requisitos de MoveConstructible y MoveAssignable pero no de CopyConstructible o CopyAssignable .

shared_lock cumple con los requisitos de Lockable . Si Mutex cumple con los requisitos de SharedTimedLockable , shared_lock también cumple con los requisitos de TimedLockable .

Para esperar en un mutex compartido en modo de propiedad compartida, std::condition_variable_any puede utilizarse ( std::condition_variable requiere std::unique_lock y por lo tanto solo puede esperar en modo de propiedad exclusiva).

Contenidos

Parámetros de plantilla

Mutex - el tipo del mutex compartido a bloquear. El tipo debe cumplir con los SharedLockable requisitos

Tipos de miembros

Tipo Definición
mutex_type Mutex

Funciones miembro

construye un shared_lock , opcionalmente bloqueando el mutex proporcionado
(función miembro pública)
desbloquea el mutex asociado
(función miembro pública)
desbloquea el mutex, si es propietario, y adquiere la propiedad de otro
(función miembro pública)
Bloqueo compartido
bloquea el mutex asociado
(función miembro pública)
intenta bloquear el mutex asociado
(función miembro pública)
intenta bloquear el mutex asociado, durante la duración especificada
(función miembro pública)
intenta bloquear el mutex asociado, hasta un punto temporal especificado
(función miembro pública)
desbloquea el mutex asociado
(función miembro pública)
Modificadores
intercambia los miembros de datos con otro shared_lock
(función miembro pública)
disocia el mutex sin desbloquear
(función miembro pública)
Observadores
devuelve un puntero al mutex asociado
(función miembro pública)
prueba si el bloqueo posee su mutex asociado
(función miembro pública)
prueba si el bloqueo posee su mutex asociado
(función miembro pública)

Funciones no miembro

especializa el algoritmo std::swap
(plantilla de función)

Informes de defectos

Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.

DR Aplicado a Comportamiento publicado Comportamiento correcto
LWG 2981 C++17 se proporcionaba una guía de deducción redundante de shared_lock<Mutex> eliminada