Я не знал переменные std::atomic, но знал о std::mutex (странное право!), предоставленное стандартом; однако одно замечание привлекло мое внимание: есть два, казалось бы, одинаковых (для меня) атомных типа, предусмотренных стандартом, перечисленным ниже:
-
std::atomic<bool>type -
std::atomic_flagtype
Также упоминается пример std::atomic_flag type -
std:: atomic_flag - это атомный булев тип. В отличие от всех специализаций std:: atomic, он гарантированно не блокируется. В отличие от std:: atomic, std:: atomic_flag не предоставляет операции загрузки или хранения.
который я не понимаю. Не гарантируется ли std::atomic bool type блокировка? Тогда это не атомный или что?
Итак, какая разница между двумя и когда я должен использовать, что?