Есть ли что-нибудь вроде AtomicStampedReference Java в C++?
Я изучаю безблокировочную структуру, и я заметил проблему ABA.
Я думаю, что Java AtomicStampedReference
может решить эту проблему.
Итак, есть ли что-нибудь подобное в C++, которое может решить эту проблему?
2 ответа
Прямого эквивалента нет. Вы можете реализовать это сами, источник дляAtomicStampedReference
здесь: https://github.com/JetBrains/jdk8u_jdk/blob/master/src/share/classes/java/util/concurrent/atomic/AtomicStampedReference.java
Вероятно, вы могли бы реализовать это на С ++, возможно, используя std::atomic<std::shared_ptr>
реализовать private volatile Pair<V> pair
.
Если вам не нужна полная функциональность AtomicStampedReference
вы, вероятно, можете использовать std::atomic<std::shared_ptr>
прямо в вашем коде. Если у вас нет C++20, вы можете использовать предыдущий автономный атомарныйshared_ptr
функции
Может тебе стоит взглянуть на std::atomic
. Я никогда не слышал о "AtomicStampedReference", но если взглянуть на него бегло, мне кажется, что это атомарная ссылка.std::atomic
для атомарных переменных. Надеюсь, это то, что вы ищете.