Domanda

Attualmente, sto implementazione di un progetto multi-thread utilizzando std::thread in C ++ 11.Io uso std::condition_variable per sincronizzare i thread.In dettaglio, una funzione consumer chiama la funzione membro di wait() di std::condition_variable per attendere l'attività da una coda di attività globali, un'altra funzione di produttore genera e mette le attività nella coda.Ma non conosco la differenza tra notify_all() e Funzioni membro di notify_one() di std::condition_variable.Quale funzione dovrei usare nella funzione produttore?Grazie!

È stato utile?

Soluzione

Se ci sono dieci fili bloccati sulla variabile delle condizioni, ad esempio, notify_one() sbloccano solo un thread, mentre notify_all() li sblocca tutti.Nel tuo caso, ti consigliamo di utilizzare notify_one() in modo da non svegliarti i thread che non hanno alcun lavoro in attesa di loro.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top