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
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

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é