首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有原子获取操作示例的c++释放栏

具有原子获取操作示例的c++释放栏
EN

Stack Overflow用户
提问于 2021-01-07 23:32:54
回答 1查看 46关注 0票数 1

我正在寻找一个关于释放栅栏和原子获取操作的同步示例。我发现的所有发布栅栏的例子都是栅栏-栅栏同步。

EN

回答 1

Stack Overflow用户

发布于 2021-01-08 09:47:39

这很简单..您可以一起使用发放栏和获取操作,如下所示:

代码语言:javascript
复制
int main()
{
    int x = 0;
    std::atomic<bool> flag{false};

    std::thread t1{[&]
    {
        x = 42;
        std::atomic_thread_fence(std::memory_order_release);
        flag.store(true, std::memory_order_relaxed);
    }};

    std::thread t2{[&]
    {
        if (flag.load(std::memory_order_acquire))
        {
            assert(x == 42); // cannot fire
        }
    }};

    t1.join(); t2.join();
}

请注意,必须在发布栅栏之后对松弛的存储进行排序。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65615293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档