Что такое атомарная операция и за что отвечает memory_order?

Атомарная операция неделима относительно конкурентных операций над тем же атомарным объектом. memory_order задаёт дополнительные ограничения на порядок и видимость обращений к памяти.

Короткий ответ

Что ответить на собеседовании

Атомарная операция неделима относительно конкурентных операций над тем же атомарным объектом. memory_order задаёт дополнительные ограничения на порядок и видимость обращений к памяти.

Подробный разбор

Ответ с пояснениями

Атомарная операция неделима относительно конкурентных операций над тем же атомарным объектом. memory_order задаёт дополнительные ограничения на порядок и видимость обращений к памяти.

relaxed сохраняет атомарность самой операции, но не публикует соседние обычные записи. release и соответствующее acquire, которое прочитало опубликованное значение или подходящую release sequence, могут установить синхронизацию между потоками. acq_rel сочетает обе стороны для read-modify-write.

seq_cst дополнительно задаёт единый порядок для sequentially consistent операций. Это не делает произвольный многошаговый алгоритм атомарным и не заменяет mutex для сложного инварианта. Не всякий atomic обязан быть lock-free; это зависит от типа и платформы. Выбирайте порядок по доказанной схеме синхронизации, а не ради формальной «оптимизации».

Источник: eel.is.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее