标签: c++ x86-64 shared-ptr smart-pointers double-compare-and-swap
是否可以在不使用事务性内存的情况下为x86 / x86-64上的智能指针实现原子交换。对于对shared_ptr进行原子交换特别感兴趣。
现代处理器上有CMPXCHG8B和CMPXCHG16B指令。可以将它们用于实现shared_ptr的原子交换吗?
CMPXCHG8B
CMPXCHG16B
答案 0 :(得分:1)
我认为shared_ptr是不可能的,因为您必须在单个原子操作中修改指针本身以及旧对象和新对象的引用计数器
shared_ptr