std::scoped_lock<MutexTypes...>:: scoped_lock
From cppreference.net
<
cpp
|
thread
|
scoped lock
C++
Concurrency support library
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
std::scoped_lock
| Member functions | ||||
|
scoped_lock::scoped_lock
|
||||
|
explicit
scoped_lock
(
MutexTypes
&
...
m
)
;
|
(1) | (depuis C++17) |
|
scoped_lock
(
std::
adopt_lock_t
, MutexTypes
&
...
m
)
;
|
(2) | (depuis C++17) |
|
scoped_lock
(
const
scoped_lock
&
)
=
delete
;
|
(3) | (depuis C++17) |
Acquiert la propriété des mutex donnés m .
1)
Si
sizeof...
(
MutexTypes
)
==
0
, ne fait rien. Sinon, si
sizeof...
(
MutexTypes
)
==
1
, appelle effectivement
m.
lock
(
)
. Sinon, appelle effectivement
std::
lock
(
m...
)
.
2)
Acquiert la propriété des mutex
m...
sans tenter de verrouiller l'un d'entre eux. Le comportement est indéfini à moins que le thread courant ne détienne un verrou non partagé (c'est-à-dire un verrou acquis par
lock
,
try_lock
,
try_lock_for
, ou
try_lock_until
) sur chaque objet dans
m...
.
3)
Le constructeur de copie est supprimé.
Le comportement n'est pas défini si
m
est détruit avant que l'objet
scoped_lock
ne le soit.
Paramètres
| m | - | mutexes dont il faut acquérir la propriété |
Exceptions
1)
Lance toutes les exceptions levées par
m.
lock
(
)
.
2)
Ne lance rien.
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 | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| P0739R0 | C++17 |
adopt_lock_t
le paramètre était en dernier, empêchant la déduction d'arguments de modèle de classe
|
déplacé en premier |