提问者:小点点

标准的原子布尔和原子标志之间的区别


我不知道 std::atomic 变量,但知道标准提供的 std::mutex(奇怪吧!然而,有一件事引起了我的注意:标准提供了两种看似相同的(对我来说)原子类型,如下所示:

>

  • std::atomic

    d::atomic_flag

    std::atomic_flag包含以下解释:

    < code>std::atomic_flag是原子布尔类型。与< code>std::atomic的所有专门化不同,它保证是无锁的。与< code>std::atomic不同

    我不明白。< code >是标准::原子的吗

    那么两者之间有什么区别,我应该什么时候使用哪个?


  • 共2个答案

    匿名用户

    std::原子布尔类型不能保证是无锁的?

    正确。std::atomic可以使用锁来实现。

    那么它不是原子的还是什么?

    < code>std::atomic是原子的,无论它是否使用锁来实现。< code>std::atomic_flag保证在不使用锁的情况下实现。

    那么,b/w两个有什么区别

    除了无锁保证之外,主要区别在于:

    std::atomic_flag不提供加载或存储操作。

    我应该什么时候使用哪个?

    通常,您需要使用std::atomic

    匿名用户

    < code >标准::原子

    std::atomic_flag另一方面保证使用无锁技术实现。