4

この回答では、bdonlan は次のようなコードを示しています。

int t;
volatile int a, b;

t = x;
a = t;
b = t;

コンパイラによって次のように変換される場合があります。

a = x;
b = x;

x私の質問は、次のように、負荷が緩和されたアトミック変数である場合、これはまだ許可されていますか?

atomic<int> x;

int t;
volatile int a, b;

t = x.load(std::memory_order_relaxed);
a = t;
b = t;
assert(a == b);    // Will this hold?

タイトルが示すように、C++11 コンパイラはアトミック変数の追加ロードを導入できますか? 追加店舗は?

4

1 に答える 1