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

2019年5月14日 32点热度 0条评论

我正在学习无锁结构,并且发现了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 functions