x86 / x86-64上智能指针的原子交换

问题描述 投票:0回答:1

是否可以在不使用事务性内存的情况下在x86 / x86-64上为智能指针实现原子交换。对shared_ptr的原子交换特别感兴趣。

现代处理器上有CMPXCHG8BCMPXCHG16B指令。是否可以将它们用于实现shared_ptr的原子交换?

c++ x86-64 shared-ptr smart-pointers double-compare-and-swap
1个回答
1
投票

我认为shared_ptr是不可能的,因为您必须在单个原子操作中修改指针本身以及旧对象和新对象的引用计数器。

store确实不需要(因为商店可以交换),但load可能需要与store同时发生(实现为交换)。

© www.soinside.com 2019 - 2024. All rights reserved.