在 C++ 中有类似 Java 的 AtomicStampedReference 的东西吗?

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

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

我觉得Java的AtomicStampedReference可以解决这个问题

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

也许你应该看看 std::atomic。 "AtomicStampedReference"我没听说过,但粗略看了一下,好像是原子引用。 std::atomic 用于原子变量。希望这就是您要找的。

没有直接的等价物。您可以自己实现,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那么可以使用之前的单机atomic shared_ptr functions