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... 的所有权,但不会尝试锁定其中任何一个。除非当前线程对 m... 中的每个对象都持有非共享锁(即通过 lock try_lock try_lock_for try_lock_until 获取的锁),否则行为未定义。
3) 复制构造函数被删除。

m scoped_lock 对象销毁前被销毁,则行为未定义。

参数

m - 要获取所有权的互斥锁数量

异常

1) 抛出由 m. lock ( ) 产生的任何异常。
2) 不抛出任何异常。

缺陷报告

以下行为变更缺陷报告被追溯应用于先前发布的C++标准。

DR 适用范围 发布时的行为 正确行为
P0739R0 C++17 adopt_lock_t 参数位于末尾,阻碍了类模板参数推导 移至首位