std:: shared_lock
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Member functions | ||||
| Shared locking | ||||
| Modifiers | ||||
| Observers | ||||
| Non-member functions | ||||
|
Défini dans l'en-tête
<shared_mutex>
|
||
|
template
<
class
Mutex
>
class shared_lock ; |
(depuis C++14) | |
La classe
shared_lock
est un wrapper de propriété de mutex partagé à usage général permettant le verrouillage différé, le verrouillage temporisé et le transfert de propriété du verrou. Verrouiller un
shared_lock
verrouille le mutex partagé associé en mode partagé (pour le verrouiller en mode exclusif,
std::unique_lock
peut être utilisé).
La classe
shared_lock
est déplaçable, mais non copiable – elle satisfait aux exigences de
MoveConstructible
et
MoveAssignable
mais pas celles de
CopyConstructible
ou
CopyAssignable
.
shared_lock
satisfait aux exigences
Lockable
. Si
Mutex
satisfait aux exigences
SharedTimedLockable
,
shared_lock
satisfait également aux exigences
TimedLockable
.
Afin d'attendre sur un mutex partagé en mode de propriété partagée, std::condition_variable_any peut être utilisé ( std::condition_variable nécessite std::unique_lock et ne peut donc attendre qu'en mode de propriété exclusive).
Table des matières |
Paramètres du modèle
| Mutex | - | le type du mutex partagé à verrouiller. Le type doit satisfaire aux SharedLockable exigences |
Types membres
| Type | Définition |
mutex_type
|
Mutex
|
Fonctions membres
construit un
shared_lock
, verrouillant optionnellement le mutex fourni
(fonction membre publique) |
|
|
déverrouille le mutex associé
(fonction membre publique) |
|
|
déverrouille le mutex, s'il est possédé, et acquiert la possession d'un autre
(fonction membre publique) |
|
Verrouillage partagé |
|
|
verrouille le mutex associé
(fonction membre publique) |
|
|
tente de verrouiller le mutex associé
(fonction membre publique) |
|
|
tente de verrouiller le mutex associé, pour la durée spécifiée
(fonction membre publique) |
|
|
tente de verrouiller le mutex associé, jusqu'à un point temporel spécifié
(fonction membre publique) |
|
|
déverrouille le mutex associé
(fonction membre publique) |
|
Modificateurs |
|
échange les membres de données avec un autre
shared_lock
(fonction membre publique) |
|
|
dissocie le mutex sans le déverrouiller
(fonction membre publique) |
|
Observateurs |
|
|
retourne un pointeur vers le mutex associé
(fonction membre publique) |
|
|
teste si le verrou possède son mutex associé
(fonction membre publique) |
|
|
teste si le verrou possède son mutex associé
(fonction membre publique) |
|
Fonctions non membres
|
(C++14)
|
spécialise l'algorithme
std::swap
(modèle de fonction) |
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Applicable à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 2981 | C++17 |
un guide de déduction redondant de
shared_lock<Mutex>
était fourni
|
supprimé |