Насколько я знаю, компилятор (программное обеспечение) и процессор (аппаратное обеспечение) будут изменять порядок по причине производительности, и устройства памяти могут предотвратить переупорядочение, они находятся на уровне компилятора или на уровне процессора.Действительно ли boost :: atomic действует как барьер аппаратной памяти?
MSDN говорит: «Функция Interlockedxxxx генерирует полный барьер памяти (или забор), чтобы гарантировать, что операции с памятью завершены в порядке», я не знаю, что «полный барьер памяти» означает аппаратный или программный барьер?
Что сделано boost :: atomic? аппаратный барьер? очистить кеш процессора/буфер хранения?
Семантика памяти_order_acquire делает программную или аппаратную машину?
use std :: atomic – James
Вы используете «аппаратный барьер» для обозначения «инструкций/префикса процессора» и «программного барьера», что означает «влияет на оптимизацию компилятора»? –