在C++中是否有类似Java的AtomicStampedReference?

Is there anything like Java's AtomicStampedReference in C++?

本文关键字:Java AtomicStampedReference C++ 是否      更新时间:2023-10-16

我正在学习无锁结构,我注意到一个ABA问题。

我认为Java的AtomicStampedReference可以解决这个问题。

那么,C++有没有类似的东西可以解决这个问题呢?

没有直接的等价物。你可以自己实现它,AtomicStampedReference的来源在这里:https://github.com/JetBrains/jdk8u_jdk/blob/master/src/share/classes/java/util/concurrent/atomic/AtomicStampedReference.java

您可能可以在c ++中实现这一点,也许可以利用std::atomic<std::shared_ptr>来实现private volatile Pair<V> pair

如果您不需要AtomicStampedReference的全部功能,则可以直接在代码中使用std::atomic<std::shared_ptr>。如果您没有 c++20,则可以使用以前的独立原子shared_ptr函数

也许你应该看看std::atomic.我从未听说过"AtomicStampedReference",但从粗略的一看,它似乎是一个原子参考。std::atomic用于原子变量。希望这就是你要找的。