std::scoped_lock
クラス<T ...>
は可変長引数版のlock_guard
だ。
int main()
{
std::mutex a, b, c, d ;
{
// a,b,c,dをlockする
std::scoped_lock l( a, b, c, d ) ;
// a,b,c,dをunlockする
}
}
std::scoped_lock
のコンストラクターは複数のロックのオブジェクトのリファレンスを取り、それぞれにデッドロックを起こさない方法でメンバー関数lock
を呼び出す。デストラクターはメンバー関数unlock
を呼び出す。