Ist x86 CMPXCHG atomar, wenn ja, warum braucht es LOCK?
DasIntel documentation sagt
Diese Anweisung kann mit einem @ verwendet werdLOCK
Präfix, damit der Befehl atomar ausgeführt werden kann.
Meine Frage is
KönnenCMPXCHG
Mit Speicheradresse arbeiten? Aus dem Dokument scheint es nicht, aber kann jemand bestätigen, dass nur mit dem tatsächlichen Wert in den Registern gearbeitet wird, nicht mit der Speicheradresse?
WennCMPXCHG
ist nicht atomar und ein High-Level-Sprachlevel CAS muss implementiert werden durchLOCK CMPXCHG
(mitLOCK
präfix), wozu soll eine solche Anweisung überhaupt eingeführt werden?