В C ++ 11:
Если я увеличиваю атомарную переменную (оператор ++ на std :: atomic), сохраняется ли новое значение с барьером памяти? Или я должен явно сделать магазин?
Вам не нужно делать явный магазин. Последовательное упорядочение памяти последовательности будет использоваться.
operator++(int)
а также operator++()
на atomic<
integral
>
типы определены, чтобы иметь эффект fetch_add(1)
, который в конечном итоге вызывает функцию-член с упорядочением памяти по умолчанию memory_order_seq_cst
,
Для спецификации осмотреться Требования к операциям на атомарных типах [atomics.types.operations.req] 29.6.5 / 33
Других решений пока нет …