std::scoped_lock<MutexTypes...>::scoped_lock
De cppreference.com
explicit scoped_lock( MutexTypes&... m );
|
(1) | (desde C++17) |
scoped_lock( std::adopt_lock_t, MutexTypes&... m );
|
(2) | (desde C++17) |
scoped_lock( const scoped_lock& ) = delete;
|
(3) | (desde C++17) |
Toma posesión de los mutex m dados.
1) Si
sizeof...(MutexTypes) == 0, no hace nada. De lo contrario, si sizeof...(MutexTypes) == 1, efectivamente llama a m.lock(). De lo contrario, efectivamente llama a std::lock(m...). El comportamiento no está definido si uno de los MutexTypes no es un mutex recursivo y el hilo actual ya posee el argumento correspondiente en m....2) Toma posesión de los mutex
m... sin intentar bloquear ninguno de ellos. El comportamiento no está definido a menos que el hilo actual posea todos los mutex en m....3) El constructor de copia está eliminado.
El comportamiento no está definido si m se destruye antes que lo sea el objeto scoped_lock.
Parámetros
| m | - | Los mutex de los cuales tomar posesión. |
Excepciones
1) Lanza cualquier excepción lanzada por
m.lock().2) No lanza nada.
Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
| ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
|---|---|---|---|
| P0739R0 | C++17 | El parámetro adopt_lock_t estaba al final, lo que impedía la deducción de argumentos de plantillas de clase.
|
Se movió al principio. |