std::unique_lock
De cppreference.com
|
|
This page has been machine-translated from the English version of the wiki using Google Translate.
The translation may contain errors and awkward wording. Hover over text to see the original version. You can help to fix errors and improve the translation. For instructions click here. |
| Definido en la cabecera <mutex>
|
||
| template< class Mutex > class unique_lock; |
(desde C++11) | |
La clase unique_lock es un contenedor de uso general de propiedad de mutex, que permite bloqueo diferido, cierre temporizado, cierre recursivo, la transferencia de la propiedad de bloqueo, y el uso con las variables de condición .
Original:
The class unique_lock is a general-purpose mutex ownership wrapper allowing deferred locking, timed locking, recursive locking, transfer of lock ownership, and use with condition variables.
The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
La clase
unique_lock no es copiable, pero es movible. El tipo Mutex suministrado deberá aplicar el concepto BasicLockable .Original:
The
unique_lock class is non-copyable, but it is movable. The supplied Mutex type shall implement the BasicLockable concept.The text has been machine-translated via Google Translate.
You can help to correct and verify the translation. Click here for instructions.
You can help to correct and verify the translation. Click here for instructions.
[editar] Tipos de miembros
| Tipo
Original: Type The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. |
Definition |
mutex_type
|
Mutex |
[editar] Las funciones miembro
| construye una unique_lock, opcionalmente bloquear el mutex suministrado Original: constructs a unique_lock, optionally locking the supplied mutex The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
| desbloquea el mutex asociado, si su propiedad Original: unlocks the associated mutex, if owned The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
| desbloquea el mutex, si es de propiedad, y adquiere la propiedad de otro Original: unlocks the mutex, if owned, and acquires ownership of another The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
Original: Locking The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |
| locks the associated mutex (función miembro público) | |
| intenta bloquear el mutex asociado, devoluciones si el mutex no está disponible Original: tries to lock the associated mutex, returns if the mutex is not available The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
| intenta bloquear el mutex asociado TimedLockable, devoluciones si el mutex no ha estado disponible para la duración de tiempo especificadoOriginal: attempts to lock the associated TimedLockable mutex, returns if the mutex has been unavailable for the specified time durationThe text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
| intenta bloquear el mutex asociado TimedLockable, devoluciones si el mutex no ha estado disponible hasta que se especifique punto de tiempo se ha alcanzado Original: tries to lock the associated TimedLockable mutex, returns if the mutex has been unavailable until specified time point has been reached The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
| desbloquea el mutex asociado Original: unlocks the associated mutex The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
Original: Modifiers The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |
| swaps afirmar con otro std::unique_lock Original: swaps state with another std::unique_lock The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
| disocia la exclusión mutua asociada sin desbloquearlo Original: disassociates the associated mutex without unlocking it The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
Original: Observers The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. | |
| devuelve un puntero a la exclusión mutua asociado Original: returns a pointer to the associated mutex The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
| comprueba si el bloqueo de exclusión mutua es dueña de su asociado Original: tests whether the lock owns its associated mutex The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
| comprueba si el bloqueo de exclusión mutua es dueña de su asociado Original: tests whether the lock owns its associated mutex The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (función miembro público) | |
[editar] Terceros funciones
| especialización de std::swap para unique_lockOriginal: specialization of std::swap for unique_lockThe text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (plantilla de función) |
[editar] Ejemplo
#include <mutex> #include <thread> #include <chrono> struct Box { explicit Box(int num) : num_things{num} {} int num_things; std::mutex m; }; void transfer(Box &from, Box &to, int num) { // don't actually take the locks yet std::unique_lock<std::mutex> lock1(from.m, std::defer_lock); std::unique_lock<std::mutex> lock2(to.m, std::defer_lock); // lock both unique_locks without deadlock std::lock(lock1, lock2); from.num_things -= num; to.num_things += num; lock1.unlock(); lock2.unlock(); } int main() { Box acc1(100); Box acc2(50); std::thread t1(transfer, std::ref(acc1), std::ref(acc2), 10); std::thread t2(transfer, std::ref(acc2), std::ref(acc1), 5); t1.join(); t2.join(); }

