Гарантирует ли стандарт C ++ 11, что std :: atomic <> реализован как атомарная операция?
Я на перекрестке, я пытаюсь выбрать между структурой данных на основе блокировки мьютекса и структурой данных без блокировки (и, возможно, без ожидания).
Копаясь немного глубже, я не нашел ни слова о том, что стандарт C ++ 11 поддерживает атомарные операции для атомарных типов, даже для основанных на ширине интегралов, таких какatomic_uint32_t
, Другими словами, это не толькоstd::atomic<>
интерфейс, которыйне предоставляется действительно атомарным, единственное, что выглядит как атомарно во всей стандартной библиотекеstd::atomic_flag
.
Это правда или я что-то упустил? В чем причина этого? Я имею в виду, что стандарт называет «атомарным» что-то, что явно не является атомарным, и это то, что даже разрешено использовать мьютексы или блокировать вызовы под капотом.