1

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

我认为JavaAtomicStampedReference可以解决这个问题。

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

4

2 回答 2

2

没有直接的等价物。你可以自己实现它,来源在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 函数

于 2019-12-09T07:59:51.277 回答
0

也许你应该看看std::atomic。我从未听说过“AtomicStampedReference”,但粗略一看,它似乎是一个原子引用。std::atomic用于原子变量。希望这是您正在寻找的。

于 2019-12-09T04:02:06.383 回答