码迷,mamicode.com
首页 > 其他好文 > 详细

读muduo网络库笔记(2.8章)

时间:2017-06-03 22:39:25      阅读:272      评论:0      收藏:0      [点我收藏+]

标签:写法   导致   需要   linu   size   分享   添加   错误   编程   

该笔记出自陈硕的《Linux多线程服务端编程》,作者比较注重版权问题,写个读后笔记应该没什么问题吧,如果有,会及时删除,没有的话继续写点笔记

--------------------------------------------

该书在2.8章介绍了copy-on-write的一种做法实例,解决了前文提到的几个需要解决的问题。

第一版本的代码:

技术分享

改版本代码问题在于,如果在Foo::doit中调用了post函数会造成死锁。(不过改bug容易定位)

 

copy-on-write版本代码:

技术分享

技术分享

技术分享

这是正确的写法,下面分析一下作者提供的错误的写法。(自己以前的错误写法就在作者列举的例子中 -。-)

技术分享

错误原因:

错误一是会导致read端在遍历的时候迭代器失效;

错误二是多个线程同时post,会出现某些线程的Foo对象添加失败,因为copy的都是老的g_foos,并且各线程之间并不同步;

错误三导致的结果跟错误二相同,只是错误的姿势不一样。

 

读muduo网络库笔记(2.8章)

标签:写法   导致   需要   linu   size   分享   添加   错误   编程   

原文地址:http://www.cnblogs.com/xf-said/p/6938651.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!