讀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

錯誤三致使的結果跟錯誤二相同,只是錯誤的姿式不同。

相關文章
相關標籤/搜索