std::condition_variable_any
Definido en el archivo de encabezado <condition_variable> | ||
class condition_variable_any; | (desde C++11) | |
La clase condition_variable_any
es una generalización de std::condition_variable. Mientras que std::condition_variable solo funciona en std::unique_lock<std::mutex>, condition_variable_any
puede operar en cualquier cerrojo que cumpla con los requerimientos de BasicLockable.
Véase std::condition_variable para obtener una descripción de la semántica de las variables de condición.
La clase std::condition_variable_any
cumple con los requerimientos de StandardLayoutType. No es CopyConstructible, MoveConstructible, CopyAssignable, o MoveAssignable.
Si el cerrojo es un std::unique_lock<std::mutex>, std::condition_variable puede proporcionar un mejor rendimiento.
Contenido |
[editar]Funciones miembro
Construye el objeto. (función miembro pública) | |
Destruye el objeto. (función miembro pública) | |
operator= [eliminada] | No es asignable mediante copia. (función miembro pública) |
Notificación | |
Notifica a un hilo en espera. (función miembro pública) | |
Notifica a todos los hilos en espera. (función miembro pública) | |
Espera | |
Bloquea el hilo actual hasta que la variable de condición se despierte. (función miembro pública) | |
Bloquea el hilo actual hasta que la variable de condición se despierte o hasta después del tiempo de espera especificado. (función miembro pública) | |
Bloquea el hilo actual hasta que la variable de condición se despierte o se haya alcanzado el punto de tiempo especificado. (función miembro pública) |
[editar]Notas
std::condition_variable_any
puede usarse con std::shared_lock para esperar en std::shared_mutex en modo de propiedad compartida.
Un posible uso de std::condition_variable_any
con tipos Lockable personalizados es proporcionar esperas interrumpibles convenientes: la operación de bloqueo personalizado bloquearía el mutex asociado como se esperaba, y también realizaría la configuración necesaria para notificar a esta variable de condición cuando se reciba la señal de interrupción.[1]
[editar]Referencias
- ↑A. Williams (2012), "C++ Concurrency in Action" 9.2.4 Interrupting a wait on std::condition_variable_any