как работает alignas в с++?

Я хочу защитить несколько атомарных переменных от фолс шеринга, как я понимаю, это можно сделать, указав чтоб переменные занимали одну строку кеша.

Я нашел, что этого можно добиться с помощью alignas(размер кеш линии)

alignas(64) std::atmic<int> a1;
alignas(64) std::atmic<int> a2;

Но я не совсем понимаю, что значит это выравнивание, это явно указывает, что в кеш переменная будет загружаться с битами заполнения? Если взять sizeof то размер переменной не изменится.В ассемблере тоже нет изменений, если компилировать с выравниванием и без

Иными словами, конечный вопрос, как работает выравнивание?


Ответы (0 шт):