Namespaces
Variants

std::scoped_lock<MutexTypes...>:: scoped_lock

From cppreference.net
Concurrency support library
Threads
(C++11)
(C++20)
this_thread namespace
(C++11)
(C++11)
Cooperative cancellation
Mutual exclusion
Generic lock management
Condition variables
(C++11)
Semaphores
Latches and Barriers
(C++20)
(C++20)
Futures
(C++11)
(C++11)
(C++11)
Safe reclamation
Hazard pointers
Atomic types
(C++11)
(C++20)
Initialization of atomic types
(C++11) (deprecated in C++20)
(C++11) (deprecated in C++20)
Memory ordering
(C++11) (deprecated in C++26)
Free functions for atomic operations
Free functions for atomic flags
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