私は小さな C++ スニペットを Java に翻訳していますが、メモリの順序付け/フェンスについて 100% の自信はありません。これは正しいです:
C++:
std::atomic<size_t> seq;
...
seq.store(1,std::memory_order_release);
...
seq.load(std::memory_order_acquire);
Javaに翻訳する必要があると思う方法:
unsafe.putLong(addr,1);
unsafe.storeFence();
unsafe.getLong(addr);
unsafe.loadFence();
これは正しい線に沿っていますか?(そして、AtomicLong を使用するだけではなく、unsafe を使用する理由もあります)