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()
。我是对的?