После прочтения книги «Барьеры памяти: взгляд на аппаратное обеспечение для хакеров программного обеспечения» я пришел к выводу, в правильности которого я не уверен, как указано в заголовке. Я пришел к этому выводу, руководствуясь интуицией, исходящей от уровня кэша ЦП (в чем я тоже не уверен): поскольку протокол MESI и его семейства гарантируют согласованность, согласованность памяти требует, чтобы ограждения памяти синхронизировались между несколькими процессорами, и это требование будет отражать во внутреннюю структуру языка программирования.
Я попытался проверить это на своем ограниченном опыте:
- Для C++ ограничивает непосредственно упоминаются в атомарных методах, хотя оба они применимы для обеспечения согласованности памяти;
- Для Java, Atomic и Lock(AQS) используйте изменчивые внутри, который также использует ограничение памяти.
Поэтому мне интересно, является ли ограничение памяти окончательным решением этих проблем синхронизации. p>
Если этот пункт в названии слишком силен, я хотел бы задаться вопросом, справедлив ли этот пункт для какого-либо конкретного процессора, например x86, ARM и т. д.
Я очень ценю любые советы и ключевые слова.
Подробнее здесь:
https://stackoverflow.com/questions/785 ... onsistency