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) | (seit C++17) |
|
scoped_lock
(
std::
adopt_lock_t
, MutexTypes
&
...
m
)
;
|
(2) | (seit C++17) |
|
scoped_lock
(
const
scoped_lock
&
)
=
delete
;
|
(3) | (seit C++17) |
Übernimmt den Besitz der gegebenen Mutexe m .
1)
Wenn
sizeof...
(
MutexTypes
)
==
0
, tut nichts. Andernfalls, wenn
sizeof...
(
MutexTypes
)
==
1
, ruft effektiv
m.
lock
(
)
auf. Andernfalls ruft effektiv
std::
lock
(
m...
)
auf.
2)
Übernimmt den Besitz der Mutexe
m...
ohne zu versuchen, einen davon zu sperren. Das Verhalten ist undefiniert, es sei denn, der aktuelle Thread hält eine nicht-geteilte Sperre (d.h. eine durch
lock
,
try_lock
,
try_lock_for
, oder
try_lock_until
erworbene Sperre) auf jedem Objekt in
m...
.
3)
Copy-Konstruktor ist gelöscht.
Das Verhalten ist undefiniert, wenn
m
zerstört wird, bevor das
scoped_lock
-Objekt zerstört wird.
Parameter
| m | - | Mutexes, deren Eigentum erworben werden soll |
Ausnahmen
1)
Wirft alle Ausnahmen, die von
m.
lock
(
)
geworfen werden.
2)
Wirft nichts.
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| P0739R0 | C++17 |
adopt_lock_t
Parameter war zuletzt, behinderte Klassentemplate-Argumentableitung
|
an erste Position verschoben |