Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Représente un modèle qui peut être instancié pour créer des objets qui gèrent le verrouillage et le déverrouillage d'un mutex.
Syntaxe
template <class Mutex>
class unique_lock;
Notes
L’argument de modèle Mutex doit nommer un type mutex.
En interne, un unique_lock stocke un pointeur vers un objet mutex associé et un bool qui indique si le thread actuel détient le mutex.
Membres
Typedefs publics
| Nom | Description |
|---|---|
mutex_type |
Synonyme de l’argument de modèle Mutex. |
Constructeurs publics
| Nom | Description |
|---|---|
| unique_lock | Construit un objet unique_lock. |
| ~unique_lock, destructeur | Libère toutes les ressources associées à l’objet unique_lock. |
Méthodes publiques
| Nom | Description |
|---|---|
| lock | Bloque le thread appelant jusqu’à ce que le thread obtienne la propriété du mutex associé. |
| mutex | Récupère le pointeur stocké vers le mutex associé. |
| owns_lock | Spécifie si le thread appelant possède le mutex associé. |
| release | Dissocie l’objet unique_lock de l’objet mutex associé. |
| swap | Échange le mutex associé et l’état de propriété avec ceux d’un objet spécifié. |
| try_lock | Tente d'obtenir la propriété de la référence mutex associée sans se bloquer. |
| try_lock_for | Tente d'obtenir la propriété de la référence mutex associée sans se bloquer. |
| try_lock_until | Tente d'obtenir la propriété de la référence mutex associée sans se bloquer. |
| unlock | Libère la propriété du mutex associé. |
Opérateurs publics
| Nom | Description |
|---|---|
| operator bool | Spécifie si le thread appelant possède le mutex associé. |
| operator= | Copie le pointeur mutex stocké et l’état de propriété associé à partir d’un objet spécifié. |
Hiérarchie d'héritage
unique_lock
Spécifications
Header :<mutex>
Espace de noms : std
lock
Bloque le thread appelant jusqu’à ce que le thread obtienne la propriété du mutex associé.
void lock();
Notes
Si le pointeur stocké mutex a la valeur NULL, cette méthode lève un system_error qui a un code d’erreur .operation_not_permitted
Si le thread appelant possède déjà le mutex associé, cette méthode lève une system_error avec le code d’erreur resource_deadlock_would_occur.
Sinon, cette méthode appelle lock sur le mutex associé et définit l’indicateur de propriété de thread interne sur true.
mutex
Récupère le pointeur stocké vers le mutex associé.
mutex_type *mutex() const noexcept;
operator bool
Spécifie si le thread appelant possède le mutex associé.
explicit operator bool() noexcept
Valeur de retour
true si le thread possède le mutex ; sinon, false.
opérateur =
Copie le pointeur mutex stocké et l’état de propriété associé à partir d’un objet spécifié.
unique_lock& operator=(unique_lock&& Other) noexcept;
Paramètres
Other
Objet unique_lock.
Valeur de retour
*this
Notes
Si le thread appelant possède le mutex précédemment associé, avant que cette méthode appelle unlock sur le mutex, il assigne les nouvelles valeurs.
Après la copie, cette méthode définit Other sur un état construit par défaut.
owns_lock
Spécifie si le thread appelant possède le mutex associé.
bool owns_lock() const noexcept;
Valeur de retour
true si le thread possède le mutex ; sinon, false.
release
Dissocie l’objet unique_lock de l’objet mutex associé.
mutex_type *release() noexcept;
Valeur de retour
La valeur précédente du pointeur mutex stocké.
Notes
Cette méthode définit la valeur du pointeur mutex stocké à 0 et l’indicateur de propriété mutex interne à false.
swap
Échange le mutex associé et l’état de propriété avec ceux d’un objet spécifié.
void swap(unique_lock& Other) noexcept;
Paramètres
Other
Objet unique_lock.
try_lock
Tente d'obtenir la propriété de la référence mutex associée sans se bloquer.
bool try_lock() noexcept;
Valeur de retour
true si la méthode obtient correctement la propriété du mutex ; sinon, false.
Notes
Si le pointeur stocké mutex a la valeur NULL, la méthode lève un system_error dont le code operation_not_permittedd’erreur est .
Si le thread appelant possède déjà le mutex, la méthode lève une system_error avec le code d’erreur resource_deadlock_would_occur.
try_lock_for
Tente d'obtenir la propriété de la référence mutex associée sans se bloquer.
template <class Rep, class Period>
bool try_lock_for(
const chrono::duration<Rep, Period>& Rel_time);
Paramètres
Rel_time
Objet chrono::duration qui spécifie la durée maximale pendant laquelle la méthode essaie d’obtenir la propriété du mutex.
Valeur de retour
true si la méthode obtient correctement la propriété du mutex ; sinon, false.
Notes
Si le pointeur stocké mutex a la valeur NULL, la méthode lève un system_error dont le code operation_not_permittedd’erreur est .
Si le thread appelant possède déjà le mutex, la méthode lève une system_error avec le code d’erreur resource_deadlock_would_occur.
try_lock_until
Tente d'obtenir la propriété de la référence mutex associée sans se bloquer.
template <class Clock, class Duration>
bool try_lock_until(const chrono::time_point<Clock, Duration>& Abs_time);
bool try_lock_until(const xtime* Abs_time);
Paramètres
Abs_time
Point dans le temps qui spécifie le seuil au-delà duquel la méthode ne tente plus d'obtenir la propriété du mutex.
Valeur de retour
true si la méthode obtient correctement la propriété du mutex ; sinon, false.
Notes
Si le pointeur stocké mutex a la valeur NULL, la méthode lève un system_error dont le code operation_not_permittedd’erreur est .
Si le thread appelant possède déjà le mutex, la méthode lève une system_error avec le code d’erreur resource_deadlock_would_occur.
unique_lock, constructeur
Construit un objet unique_lock.
unique_lock() noexcept;
unique_lock(unique_lock&& Other) noexcept;
explicit unique_lock(mutex_type& Mtx);
unique_lock(mutex_type& Mtx, adopt_lock_t Adopt);
unique_lock(mutex_type& Mtx, defer_lock_t Defer) noexcept;
unique_lock(mutex_type& Mtx, try_to_lock_t Try);
template <class Rep, class Period>
unique_lock(mutex_type& Mtx,
const chrono::duration<Rep, Period>
Rel_time);
template <class Clock, class Duration>
unique_lock(mutex_type& Mtx,
const chrono::time_point<Clock, Duration>
Abs_time);
unique_lock(mutex_type& Mtx,
const xtime* Abs_time) noexcept;
Paramètres
Mtx
Objet de type mutex.
Rel_time
Objet chrono::duration qui spécifie la durée maximale pendant laquelle la méthode essaie d’obtenir la propriété du mutex.
Abs_time
Point dans le temps qui spécifie le seuil au-delà duquel la méthode ne tente plus d'obtenir la propriété du mutex.
Other
Objet unique_lock.
Notes
Le premier constructeur construit un objet qui a une valeur de pointeur mutex associé de 0.
Le deuxième constructeur déplace l’état mutex associé à partir d’Autres. Après le déplacement, Other n’est plus associé à un mutex.
Les constructeurs restants stockent & Mtx comme pointeur stocké mutex . L’appartenance du mutex est déterminée par le deuxième argument, s’il existe.
| Nom | Description |
|---|---|
No argument |
L’appartenance est obtenue en appelant la méthode lock sur l’objet mutex associé. |
Adopt |
L’appartenance est supposée. Mtx doit être verrouillé quand le constructeur est appelé. |
Defer |
Le thread appelant est supposé ne pas posséder l’objet mutex. Mtx ne doit pas être verrouillé quand le constructeur est appelé. |
Try |
L’appartenance est déterminée en appelant try_lock sur l’objet mutex associé. Le constructeur ne lève aucune exception. |
Rel_time |
L’appartenance est déterminée en appelant try_lock_for(Rel_time). |
Abs_time |
L’appartenance est déterminée en appelant try_lock_until(Abs_time). |
~unique_lock, destructeur
Libère toutes les ressources associées à l’objet unique_lock.
~unique_lock() noexcept;
Notes
Si le thread appelant possède le mutex associé, le destructeur libère la propriété en appelant unlock sur l’objet mutex.
déverrouiller
Libère la propriété du mutex associé.
void unlock();
Notes
Si le thread appelant ne possède pas le mutex associé, cette méthode lève une system_error avec le code d’erreur operation_not_permitted.
Sinon, cette méthode appelle unlock sur le mutex associé et définit l’indicateur de propriété de thread interne sur false.
Voir aussi
Informations de référence sur les fichiers d’en-tête
<mutex>