Die Dokumentation von Intel scheint ziemlich klar zu sein, dass dies redundant ist.
IA-32 Intel® Architektur Handbuch für Softwareentwickler Band 3A: Handbuch zur Systemprogrammierung, Teil 1
7.1.2.1 sagt:
Die Operationen, bei denen der Prozessor automatisch der LOCK-Semantik folgt, sind folgende wie folgt:
- Bei der Ausführung einer XCHG-Anweisung, die auf Speicher verweist.
Ähnlich,
Intel® 64 und IA-32 Architekturen Handbuch für Softwareentwickler Band 2B: Befehlssatz-Referenz, N-Z
XCHG:
Wenn ein Speicheroperand referenziert wird, wird das Sperrprotokoll des Prozessors automatisch für die Dauer des Austauschvorgangs implementiert, unabhängig davon, ob das Präfix LOCK vorhanden ist oder nicht und unabhängig vom Wert der IOPL.
Beachten Sie, dass dies nicht bedeutet, dass das LOCK#-Signal unabhängig von der Verwendung des LOCK-Präfixes aktiviert wird. In Abschnitt 7.1.4 wird beschrieben, wie auf neueren Prozessoren die Locking-Semantik ohne LOCK# erhalten bleibt, wenn die Speicherstelle im Cache gespeichert ist. Clever, und definitiv über meinen Verstand.