Requisitos denominados de C++: BasicLockable (desde C++11)
De cppreference.com
Los requisitos de BloqueableBásico describen las características mínimas de tipos que proporcionan semántica de bloqueo exclusivo para agentes de ejecución (es decir, hilos).
Requisitos
Para que un tipo L sea BloqueableBásico, se deben satisfacer las siguientes condiciones para un objeto m de tipo L:
| Expresión | Requiere | Efectos |
|---|---|---|
m.lock()
|
Se bloquea hasta que se pueda obtener un cerrojo para el agente de ejecución actual (hilo, proceso, tarea). Si se lanza una excepción, no se obtiene ningún cerrojo. | |
m.unlock()
|
El agente de ejecución actual tiene un cerrojo no compartido en m.
|
Libera el cerrojo no compartido mantenido por el agente de ejecución.
No lanza excepciones. |
Cerrojos no compartidos
Se dice que un cerrojo en un objeto es un cerrojo no compartido si se adquiere mediante una llamada a la función miembro lock, try_lock, try_lock_for, o try_lock_until.
Biblioteca estándar
Los siguientes tipos de la biblioteca estándar satisfacen los requisitos BasicLockable:
(C++11) |
Proporciona servicios de exclusión mutua básicos. (clase) |
(C++11) |
Proporciona un servicio de bloqueo mutuo que puede ser bloqueado recursivamente por el mismo hilo/subproceso. (clase) |
(C++11) |
Proporciona un servicio de exclusión mutua que puede ser bloqueado recursivamente por el mismo hilo e implementa bloqueo con un tiempo de espera. (clase) |
(C++17) |
Proporciona un servicio de exclusión mutua compartida. (clase) |
(C++14) |
Proporciona un servicio de exclusión mutua compartida e implementa bloqueo con un tiempo de espera. (clase) |
(C++11) |
Proporciona un servicio de exclusión mutua que implementa bloqueo con un tiempo de espera. (clase) |