ich std :: lese condition_variable auf http://en.cppreference.com/w/cpp/thread/condition_variable und ich verstehe das nicht:Gemeinsam genutzte Atom Variable nicht ordnungsgemäß veröffentlicht, wenn es nicht unter Mutex modifiziert
Auch wenn die gemeinsame Variable atomar ist, es muss unter dem Mutex geändert werden, um die Änderung im wartenden Thread korrekt zu veröffentlichen.
Warum wird eine gemeinsame atomare Variable nicht korrekt veröffentlicht, wenn sie nicht unter Mutex geändert wird? Wie kann ich diese Aussage verstehen?
Auf einer anderen Seite http://en.cppreference.com/w/cpp/atomic/atomic gibt es eine Anweisung, die auf die erste Mitteilung zu widersprechen scheint:
Wenn ein Thread zu einem Atom Objekt schreibt, während ein anderer Thread von ihm liest, wird das Verhalten wohldefinierte
'std :: condition_variable' und' std :: atomic' sind zwei verschiedene Dinge. –
Ich nehme an, dass der wartende Thread über den Mutex synchronisiert wird (sonst könnte es nicht "warten") und nicht über die atomare Variable. –
Es ist über das letzte Beispiel in http://stackoverflow.com/a/32978267/2756719 –