新しく導入されたスレッド同期プリミティブを使用して緩和されたメモリ順序を利用する C++11 コードを記述する場合、通常、次のいずれかが表示されます。
std::atomic<int> vv;
int i = vv.load(std::memory_order_acquire);
また
vv.store(42, std::memory_order_release);
なぜこれが理にかなっているのかは私には明らかです。
私の質問は次のとおりです。組み合わせも意味がvv.store(42, std::memory_order_acquire)
ありますか? vv.load(std::memory_order_release)
どのような状況でそれらを使用できますか? これらの組み合わせのセマンティクスは何ですか?