std::shared_lock
Definido en el archivo de 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 la propiedad del bloqueo. Bloquear un shared_lock
bloquea el mutex compartido asociado en modalidad compartida (para bloquearlo en modalidad exclusiva, se puede usar std::unique_lock).
La clase shared_lock
se puede mover, pero no se puede copiar; cumple con los requerimientos de MoveConstructible y MoveAssignable pero no de CopyConstructible o CopyAssignable.
Para esperar en un mutex compartido en modalidad de propiedad compartida, se puede usar std::condition_variable_any (std::condition_variable requiere std::unique_lock y así solo puede esperar en modalidad de propiedad única).
Contenido |
[editar] Parámetros de plantilla
Mutex | - | El tipo de mutex compartido a bloquear. El tipo debe cumplir con los requerimientos de SharedMutex. |
[editar] Tipos miembro
Tipo | Definición |
mutex_type
|
Mutex |
[editar] Funciones miembro
Construye un objeto shared_lock , opcionalmente bloquea el mutex suplementado (función miembro pública) | |
Desbloquea el mutex asociado (función miembro pública) | |
Desbloquea el mutex si lo posee, y toma posesión 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 por la duración especificada (función miembro pública) | |
Intenta bloquear el mutex asociado hasta un punto en el tiempo especificado (función miembro pública) | |
Desbloquea el mutex asociado (función miembro pública) | |
Modificadores | |
Intercambia los datos miembro con otro objeto shared_lock (función miembro pública) | |
Desasocia el mutex sin desbloquear (función miembro pública) | |
Observadores | |
Devuelve un puntero al mutex asociado (función miembro pública) | |
Comprueba si el cerrojo posee su mutex asociado (función miembro pública) | |
Comprueba si el cerrojo posee su mutex asociado (función miembro pública) |
[editar] Funciones no miembro
(C++14) |
Especialización de std::swap para shared_lock (plantilla de función) |
[editar] Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
---|---|---|---|
LWG 2981 | C++17 | Se proporcionó guía de deducción redundante de scoped_lock<MutexTypes...> .
|
Se eliminó. |