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).
Parámetros de plantilla
| Mutex | - | El tipo de mutex compartido a bloquear. El tipo debe cumplir con los requerimientos de SharedMutex. |
Tipos miembro
| Tipo | Definición |
mutex_type
|
Mutex
|
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) | |
Funciones no miembro
(C++14) |
Especialización de std::swap para shared_lock (plantilla de función) |
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ó. |