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...
의 소유권을 획득합니다. 이때 어떤 뮤텍스도 잠그려 시도하지 않습니다. 현재 스레드가
m...
내 각 객체에 대해 비공유 잠금(즉,
lock
,
try_lock
,
try_lock_for
, 또는
try_lock_until
으로 획득한 잠금)을 보유하지 않는 경우, 동작은 정의되지 않습니다.
3)
복사 생성자가 삭제되었습니다.
m
이
scoped_lock
객체보다 먼저 소멸되는 경우 동작은 정의되지 않습니다.
매개변수
| m | - | 소유권을 획득할 뮤텍스 |
예외
1)
m.
lock
(
)
가 발생시키는 모든 예외를 발생시킵니다.
2)
아무것도 throw하지 않습니다.
결함 보고서
다음의 동작 변경 결함 보고서들은 이전에 발표된 C++ 표준에 소급 적용되었습니다.
| DR | 적용 대상 | 게시된 동작 | 올바른 동작 |
|---|---|---|---|
| P0739R0 | C++17 |
adopt_lock_t
매개변수가 마지막 위치에 있어 클래스 템플릿 인수 추론을 방해함
|
첫 번째 위치로 이동됨 |