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) | (начиная с C++17) |
|
scoped_lock
(
std::
adopt_lock_t
, MutexTypes
&
...
m
)
;
|
(2) | (начиная с C++17) |
|
scoped_lock
(
const
scoped_lock
&
)
=
delete
;
|
(3) | (начиная с C++17) |
Приобретает владение указанными мьютексами m .
1)
Если
sizeof...
(
MutexTypes
)
==
0
, не выполняет никаких действий. В противном случае, если
sizeof...
(
MutexTypes
)
==
1
, эффективно вызывает
m.
lock
(
)
. В противном случае эффективно вызывает
std::
lock
(
m...
)
.
2)
Приобретает владение мьютексами
m...
без попытки заблокировать любой из них. Поведение не определено, если текущий поток не удерживает неразделяемую блокировку (т.е. блокировку, полученную с помощью
lock
,
try_lock
,
try_lock_for
, или
try_lock_until
) на каждом объекте в
m...
.
3)
Конструктор копирования удалён.
Поведение не определено, если
m
уничтожается до того, как будет уничтожен объект
scoped_lock
.
Параметры
| m | - | мьютексов для получения владения |
Исключения
1)
Выбрасывает любые исключения, выбрасываемые
m.
lock
(
)
.
2)
Ничего не выбрасывает.
Отчеты о дефектах
Следующие отчеты об изменениях поведения, содержащие исправления дефектов, были применены ретроактивно к ранее опубликованным стандартам C++.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| P0739R0 | C++17 |
adopt_lock_t
parameter was last, impeding class template argument deduction
|
moved to first |