std:: shared_lock
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Shared locking | ||||
| Modifiers | ||||
| Observers | ||||
| Non-member functions | ||||
|
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
|
(C++14)
|
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 |