Здравствуйте, vdimas, Вы писали:
V>·> mfence
V>Запрет переупорядочивания, т.е. пример мимо.
V>Это всего-лишь артефакт дополнительного требования для сериализации доступа.
V>Для слабых требований mfence не нужен.
V>А сильные модели содержат куда как больше вариантов, чем один mfence из x86/x86_x64.
Какие модели? Это просто один из вариантов реализации (особенность gcc). Второй — xchg.
Вообще непонятно с чем ты споришь. alex_public утверждал, что инструкции для atomic vs non-atimic одинаковые. Это оказалось враньём.
V>·> xchg dword ptr [rip + v], eax
V>Это про когерентную синхронизацию данных из разных потоков, тоже не имеет отношения к факту атомарной записи значения.
С т.з. ЯП С/С++ — имеет.
V>·>Никакой синхронизации, говоришь?
V>При чём тут синхронизация? ))
Т.е. "__sync_synchronize" по-твоему к синхронизации отношения не имеет?
V>Курить, что есть атомарность.
Так кури:
Во втором случае используются специальные программные средства синхронизации, с помощью которых осуществляется блокировка разделяемого ресурса; после блокировки выполняется операция, которую требуется выполнить атомарно