我正在学习无锁结构,我注意到一个 ABA 问题。
我认为JavaAtomicStampedReference
可以解决这个问题。
那么,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
用于原子变量。希望这是您正在寻找的。