当前位置: 首页 > >

muduo库使用示例之聊天服务器(下)

发布时间:

借用shared_ptr实现copy on write

    shared_ptr是引用计数智能指针,如果当前只有一个观察者,那么引用计数为1,可以用shared_ptr::unique()来判断对于共享资源有两个端,分别是read端、write端对于write端,如果发现引用计数为1(说明只有一个写者访问它),这时可以安全地修改对象,不必担心有人在读它对于read端,在读之前把引用计数加1,读完之后减1,这样可以保证在读的期间其引用计数大于1,可以阻止并发写比较难的是,对于write端,如果发现引用计数大于1,该如何处理?既然要更新数据,肯定要加锁,如果这时候其他线程正在读,那么不能在原来的数据上修改,得创建一个副本,在副本上修改,修改完了再替换。如果没有用户在读,那么可以直接修改



友情链接: