Я читал, что Full fences
предотвращает любое переупорядочение команд или кеширование вокруг этого ограждения (через памятьBarrier)
Затем я прочитал о volatile
, который генерирует "половинные заборы":
Ключевое слово volatile инструктирует компилятор генерировать приобретать ограждение при каждом чтении с этого поля, а также каждая запись в это поле.
acquire-fence
Захват позволяет предотвратить перемещение других операций чтения/записи забор;
release-fence
Заблокировка позволяет предотвратить перемещение других операций чтения/записи после забор.
Может кто-нибудь объяснить мне эти два предложения на простом английском?
(где - забор?)
изменить
После некоторых ответов здесь - я сделал рисунок, который может помочь всем - я думаю.