Атомарные инструкции имеют требования к адресу памяти; нарушение выравнивания может сделать операцию недопустимой. Особенно важно 64-битное значение на некоторых 32-битных платформах.
Почему в sync/atomic требуются выровненные указатели?
Атомарные инструкции имеют требования к адресу памяти; нарушение выравнивания может сделать операцию недопустимой. Особенно важно 64-битное значение на некоторых 32-битных платформах.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Атомарные инструкции имеют требования к адресу памяти; нарушение выравнивания может сделать операцию недопустимой. Особенно важно 64-битное значение на некоторых 32-битных платформах.
При использовании низкоуровневых функций с *int64 или *uint64 учитывайте гарантии размещения на целевой архитектуре. Типизированные atomic.Int64 и atomic.Uint64 специально обеспечивают необходимое выравнивание. Не получайте произвольный адрес через unsafe ради атомарной операции. Кроме выравнивания, все конкурирующие обращения к значению должны соблюдать один атомарный протокол — смешивание с обычной записью остаётся гонкой.