- 主题:shard_ptr这样用有问题吗?
锁是一个问题,它这个场景本身是SP适用范围吧,更新守护线程提供最新模块,工作线程随时去拿一个当前最新的用,虽然不保证最新,但是当前业务能完整跑完,用完再释放过期的模块。适合很多网络服务的热更新。
【 在 here080 的大作中提到: 】
:
: 这个就是错的呀。
: 绝大多数情况下shared_ptr不能代替锁。
: 用锁了就不需要shared_ptr了。
: 【 在 lambdai (lambdai) 的大作中提到: 】
#发自zSMTH@IN2010
--
FROM 117.136.38.*
楼主的例子是多个线程用同一个模块啊,一个线程负责更新模块。
【 在 here080 的大作中提到: 】
:
: 问题是,你为什么要share?
: copy一份不香吗?
: share的对象往往内部还要再加锁,而且容易出现无法预料的线程竞争。
: 【 在 ble (ble) 的大作中提到: 】
#发自zSMTH@IN2010
--
FROM 114.255.33.*
对于一个复杂的公用模块,你说是一边更新里面的细节一边让人用安全,还是完整更新好了,再把新的替换过去安全啊?
如果完成事务需要调用模块好几次,老司机也怕这样吧:
p->funcA()
//blablabla
newP->funcB()
在网络服务里面,这些对应的是全局复用模块,而单次请求数据,才适合你说的拷贝场景。
【 在 here080 的大作中提到: 】
:
: 为什么要用同一个模块?
: 更新模块为什么不在原对象上更新,而是新建对象?
: 【 在 ble (ble) 的大作中提到: 】
: : 标 题: Re: shard_ptr这样用有问题吗?
#发自zSMTH@IN2010
--
FROM 114.255.33.*