Есть ли что-нибудь вроде 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для атомарных переменных. Надеюсь, это то, что вы ищете.

Другие вопросы по тегам