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 パラメータが最後にあり、クラステンプレート引数推論を妨げていた 最初に移動