Гарантирует ли стандарт C ++ 11, что std :: atomic <> реализован как атомарная операция?

Я на перекрестке, я пытаюсь выбрать между структурой данных на основе блокировки мьютекса и структурой данных без блокировки (и, возможно, без ожидания).

Копаясь немного глубже, я не нашел ни слова о том, что стандарт C ++ 11 поддерживает атомарные операции для атомарных типов, даже для основанных на ширине интегралов, таких какatomic_uint32_t , Другими словами, это не толькоstd::atomic<> интерфейс, которыйне предоставляется действительно атомарным, единственное, что выглядит как атомарно во всей стандартной библиотекеstd::atomic_flag .

Это правда или я что-то упустил? В чем причина этого? Я имею в виду, что стандарт называет «атомарным» что-то, что явно не является атомарным, и это то, что даже разрешено использовать мьютексы или блокировать вызовы под капотом.

Ответы на вопрос(2)

Ваш ответ на вопрос