小编Mag*_*iie的帖子

完全线程安全的shared_ptr实现

有人知道完全线程安全的shared_ptr实现吗?例如,boost实现shared_ptr对于目标(引用计数)是线程安全的,并且对于同时shared_ptr实例读取也是安全的,但不是写入或读/写.

(参见Boost docs,例3,4和5).

是否存在对shared_ptr实例完全线程安全的shared_ptr实现?

提升文档的人说:

shared_ptr对象提供与内置类型相同的线程安全级别.

但是如果你比较一个普通的指针(内置类型)smart_ptr,那么同时写一个普通的指针是线程安全的,但同时写入a smart_ptr不是.

编辑:我的意思是x86架构上的无锁实现.

EDIT2:这种智能指针的一个示例用例是有许多工作线程,它们使用当前工作项更新全局shared_ptr,并使用监视器线程获取工作项的随机样本.shared-ptr将拥有该工作项,直到为其分配了另一个工作项指针(从而销毁了以前的工作项).监视器将获得工作项的所有权(从而防止工作项被销毁),方法是将其分配给自己的shared-ptr.它可以通过XCHG和手动删除来完成,但如果共享ptr可以做到这一点会很好.

另一个例子是全局shared-ptr拥有"处理器",由某个线程分配,并由其他一些线程使用.当"用户"线程看到处理器shard-ptr为NULL时,它使用一些替代逻辑来进行处理.如果它不是NULL,它会通过将处理器分配给它自己的shared-ptr来防止处理器被破坏.

c++ boost thread-safety shared-ptr

13
推荐指数
1
解决办法
2万
查看次数

标签 统计

boost ×1

c++ ×1

shared-ptr ×1

thread-safety ×1