了解C ++内存障碍的使用

时间:2017-03-01 08:28:12

标签: c++ atomicity memory-barriers

std :: memory_order_acquire barrier确保在屏障之后的所有读取(加载)操作之后执行读取/写入之后的所有操作。

例如,我有以下代码:

#include <iostream>
#include <atomic>

int num = 25;

int getValue()
{
    return num;
}

void setValue(int value)
{
    num = value;
}

int main()
{
    std::atomic<int> n;
    int data = getValue();
    n.store(data, std::memory_order_acquire);
    setValue(100);
    std::cout << getValue();
}

我可以确定在遵循代码之前会保证代码int data = getValue();能够执行吗?

n.store(data, std::memory_order_acquire); 
setValue(100); 
std::cout << getValue();

在原子存储时刻,保证执行int data = getValue()。我是对的?

0 个答案:

没有答案