在 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
我正在学习无锁结构,我注意到一个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