c++ - ¿Cuál es la diferencia entre notify_all() y notification_one() de std:: condition_variable?
multithreading c++11 (1)
Actualmente, estoy implementando un proyecto multihilo usando std::thread
en C ++ 11. Uso std::condition_variable
para sincronizar hilos. En detalle, una función del consumidor llama a la función miembro wait()
de std::condition_variable
para esperar una tarea de una cola de tareas global, otra función de productor genera y pone las tareas en la cola. Pero no conozco la diferencia entre las funciones miembro de notify_all()
y notify_one()
de std::condition_variable
. ¿Qué función debo usar en la función de productor? ¡Gracias!
Si hay diez subprocesos bloqueados en la variable de condición, por ejemplo, notify_one()
desbloqueará solo un subproceso, mientras que notify_all()
los desbloqueará a todos. En su caso, querrá usar notify_one()
para no despertar hilos que no tienen ningún trabajo esperándolos.