Wann wird eine Bedingungsvariable benötigt, ist ein Mutex nicht ausreichend?

Ich bin sicher, Mutex ist nicht genug, deshalb gibt es das Konzept der Bedingungsvariablen. aber es schlägt mich und ich bin nicht in der Lage, mich mit einem konkreten Szenario zu überzeugen, wenn eine Bedingungsvariable wesentlich ist.

Unterschiede zwischen bedingten Variablen, Mutexen und Sperren Die akzeptierte Antwort der Frage besagt, dass eine Bedingungsvariable a ist

verriegeln Sie mit einem "signalisierenden" Mechanismus. Es wird verwendet, wenn Threads auf die Verfügbarkeit einer Ressource warten müssen. Ein Thread kann in einem Lebenslauf "warten", und dann kann der Ressourcenproduzent der Variablen "signalisieren". In diesem Fall werden die Threads, die auf den Lebenslauf warten, benachrichtigt und können die Ausführung fortsetzen

Wenn ich verwirrt bin, kann ein Thread auch auf einen Mutex warten, und wenn er signalisiert wird, bedeutet dies einfach, dass die Variable jetzt verfügbar ist. Warum sollte ich eine Bedingungsvariable benötigen?

P.S .: Außerdem ist ein Mutex erforderlich, um die Bedingungsvariable zu schützen, wenn meine Sicht dahingehend beeinträchtigt wird, den Zweck der Bedingungsvariablen nicht zu sehen.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage