c++ multithreading c++11 condition-variable

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.