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