读muduo网络库笔记(2.8章)

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

--------------------------------------------多线程

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

初版本的代码:post

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

 

copy-on-write版本代码:线程

这是正确的写法,下面分析一下做者提供的错误的写法。(本身之前的错误写法就在做者列举的例子中 -。-)对象

错误缘由:blog

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

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

错误三致使的结果跟错误二相同,只是错误的姿式不同。

相关文章
相关标签/搜索