当前位置:  开发笔记 > 编程语言 > 正文

C++ 11如何在atomic :: store和atomic :: load中观察内存顺序

如何解决《C++11如何在atomic::store和atomic::load中观察内存顺序》经验,为你挑选了0个好方法。

更新3:
在了解了"内存顺序"之后,我知道问题与编译器完全无关.
是的,因为我的CPU架构是Intel x86,无论我编写什么代码,内存顺序效果都不会发生.

更新2:
我检查反汇编代码.但是,我发现无论我如何添加代码,x.store总是在y.store之前.
问题应该来自编译器(它没有重新排序这些代码)而不是CPU(据我所知).

更新:
在我阅读评论后,似乎我必须借用一台CPU为alpha,arm或ppc的机器.
有谁知道我在哪里可以使用这种机器,即使这不是免费的?

来源:
我正在测试下面的代码.

atomic x(0);
atomic y(0);

void thr1()
{
    x.store(1,memory_order_relaxed);
    y.store(1,memory_order_relaxed);
}

void thr2()
{
    while(!y.load(memory_order_relaxed))
        ;
    cout<

我知道输出可能是0.
但是,无论我尝试了多少次,我总是得到1.
这是因为我的CPU是x86架构吗?

如果没有,如何解决这个问题?
(顺便说一句,我知道CppMem.但它不能使用循环.)

推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有