有没有类似Java的C ++中的AtomicStampedReference?

时间:2019-12-09 02:44:26

标签: java c++ atomic lock-free aba

我正在学习无锁结构,并且发现了ABA问题。

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

那么,C ++中有什么可以解决此问题的东西?

2 个答案:

答案 0 :(得分: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 functions

答案 1 :(得分:0)

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