首页 > 解决方案 > gcc 和 clang 中的 atomic_flag.wait/notify_one 呢?

问题描述

我找不到 std::atomic_flag 的任何新的 c++20 功能(提案 P0995R1)

我查看了 gcc 状态表,但没有发现任何关于它的信息 https://gcc.gnu.org/projects/cxx-status.html

然后我尝试在 gcc 和 clang 编译器上编译下面的代码,但是这个代码只在 gcc 和 clang 的主干分支上编译

#include <atomic>
#include  <thread>

int main()
{
    std::atomic_flag f;

    std::thread t([&] 
    {
        f.wait(false);
        std::cout << "gggg" << std::endl;
    });
    using namespace std::chrono_literals;
    std::this_thread::sleep_for(3s);
    f.test_and_set();
    f.notify_all();

    t.join();

    std::cout << "Hello World!\n";
}

有人知道此功能的实施状态吗?

标签: c++gccclangc++20

解决方案


这种最新的特性在很大程度上取决于编译器。使用 boost::atomic_flag。它是原创的并且独立于编译器/操作系统


推荐阅读