Я не знаю обо всех процессорах, так как я больше всего знаком с 64-битным процессором Intel.Хотя в целом я бы сказал ДА, если хотя бы один поток будет записывать в память.
Все это связано со строками кэша.На моем ПК строка кэша составляет 64 байта (не бит), число, которое вы можете получить с помощью std :: hardware_destructive_interference_size .
. Если вы проигнорируете это, вы попадете в ловушку, которая называется:ложный обмен.Это аннулирование строки кэша, которую вы используете при записи в несвязанное значение в той же строке кэша.
Вы можете использовать std :: memory_order , чтобы предотвратить это, однако,значение является минимальным требованием, которое в Intel 64bit игнорируется в большинстве случаев, поскольку сам процессор гарантирует std :: memory_order_seq_cst.Это все еще может повлиять на оптимизацию.(Для небольших проходов оптимизации, которые могут иметь дело с атомами)
В заключение: выделите из потоков области памяти из случайных элементов, когда это возможно.