Shvetsov Evgeniy Ответов: 1

Нужно ли отмечать STD:: ATOMIC с VOLATILE?


Я уже привык оба volatilce резюме И std::atomic класс сепарталей теперь я задаюсь вопросом, должен ли я объединить их, чтобы обеспечить надлежащий доступ?

В общем, если предположить, что у меня есть какие-то глобально-статический атомный флаг, будет ли это так std::atomic<bool> ОПЕРАЦИОННАЯ std::atomic_flag, на самом деле не имеет значения (как я это вижу), должен ли я пометить его как volatile?

Я посмотрел на std::atomic::operator= описание[^] И он имеет специфическую изменчивую реализацию:
Цитата:
T оператор= (T желаемый );
T оператор= (T желаемый ) Летучий;

В качестве volatile квалифицированная функция-член используется с volatile экземпляры ("volatile: лучший друг многопоточного программиста", По Андрей Александреску), те, кто разработал такой интерфейс класса, предполагали, что там будет volatile объекты класса созданы для какой-то цели, так что, очевидно, есть какая-то причина для этого.

Что я уже пробовал:

ДА я отношусь с пониманием volatile против atomic diffirence [например, "фитонциды и летучие", По Херб Саттер]

1 Ответов

Рейтинг:
1

KarstenK

Да. И вы должны реализовать оба оператора. Обратите внимание, что Летучий тип нуждается в некоторых деталях синхронизации для обеспечения атомарного доступа.