explicit scoped_lock( MutexTypes&... m ); | (1) | (since C++17) |
scoped_lock( std::adopt_lock_t, MutexTypes&... m ); | (2) | (since C++17) |
scoped_lock( const scoped_lock& ) = delete; | (3) | (since C++17) |
Acquires ownership of the given mutexes m.
sizeof...(MutexTypes) == 0, does nothing. Otherwise, if sizeof...(MutexTypes) == 1, effectively calls m.lock(). Otherwise, effectively calls std::lock(m...).m... without attempting to lock any of them. The behavior is undefined unless the current thread holds a non-shared lock (i.e., a lock acquired by lock, try_lock, try_lock_for, or try_lock_until) on each object in m....The behavior is undefined if m is destroyed before the scoped_lock object is.
| m | - | mutexes to acquire ownership of |
m.lock()
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| 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 |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/thread/scoped_lock/scoped_lock