Документация Intel кажется довольно ясной, что она избыточна.
IA-32 Intel® Architecture
Руководство разработчика программного обеспечения
Том 3А:
Руководство по системному программированию, часть 1
7.1.2.1 говорит:
Операции, в которых процессор автоматически следует семантике LOCK,
следующим образом:
- При выполнении инструкции XCHG, которая ссылается на память.
Аналогично,
Архитектура Intel® 64 и IA-32
Руководство разработчика программного обеспечения
Том 2Б:
Справочник инструкций, N-Z
XCHG:
Если имеется ссылка на операнд памяти, протокол блокировки процессора автоматически
реализуется на время операции обмена независимо от наличия или отсутствия префикса LOCK или значения IOPL.
Обратите внимание, что это фактически не означает, что сигнал LOCK # утверждается независимо от того, используется ли префикс LOCK, 7.1.4 описывает, как на более поздних процессорах семантика блокировки сохраняется без LOCK #, если ячейка памяти кэшируется. Умно и определенно над моей головой.