operator ++ - это не отдельная операция, а 3 операции загрузки с добавлением хранилища, и, например, при использовании единой загрузки или хранения на arm64 не возникает никаких препятствий для данных, а объем памяти данных возрастает.
Например, atomic_add 1 - это набор кода с семантикой aquire / release
.LBB2_1:
ldaxr x8, [x0] //load exclusive register with aquire
add x8, x8, #1
stlxr w9, x8, [x0] //store with rlease
cbnz w9, .LBB2_1 //if another thread changed value, try again
, где оператор ++ вызовет состояние гонки, если симулирует использование двумя потоками
ldr x8, [x0]
add x8, x8, #1 // =1
str x8, [x0]