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.
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) | |
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]
Referencias
- ↑ A. Williams (2012), "C++ Concurrency in Action" 9.2.4 Interrupting a wait on std::condition_variable_any