Le variabili di condizione sono uno degli aspetti di C++ 11 Sto ancora lottando con un po '. Da quello che ho raccolto una variabile di condizione è molto simile a un semaforo.Perché una variabile di condizione ha bisogno di un lock (e quindi anche di un mutex)
Ma poi di nuovo, un semaforo non avrebbe bisogno di un blocco per funzionare. Una variabile di condizione fa. E una serratura a sua volta ha bisogno di un mutex. Quindi, al fine di utilizzare la funzionalità abbastanza semplice di un semaforo, ora dobbiamo non solo gestire una variabile di condizione. Ma anche un mutex e una serratura.
Quindi perché una variabile di condizione ha bisogno di questo? E quale funzionalità aggiunta viene fornita aggiungendo questo requisito?
Il mutex è il blocco. Il lock della classe thread è solo un wrapper RAII attorno al mutex, quindi non è gestito ma usato localmente. – stefaanv
correlati [Perché le funzioni delle variabili di condizione di pthreads richiedono un mutex?] (Http://stackoverflow.com/q/2763714/2069064) – Barry
Correlato in modo tangenziale: è possibile implementare semafori in termini di mutex e variabili di condizione piuttosto facilmente. Le variabili di condizione sono solo una diversa primitiva in attesa; rendono molto più semplice aspettare le condizioni generali, espresse dal codice utente. – Mark