linux c++ 多線程心得

來源:互聯網
上載者:User

標籤:c++   linux c   span   引用   參數傳遞   creat   線程   第一個   create   

好久沒寫多線程了,工作好幾年也沒怎麼大規模的寫過多線程,都是成形的架構裡寫商務邏輯。偶爾自己寫了下,各種踩坑。。。

1.string 不是安全執行緒的

一個特例是std::string。在一些STL的實現廠商(包括MS VC6),使用的是帶引用計數的string! 這就意味著可能有兩個std::string的執行個體共用著同一塊底層資料。這使得前面說的第一個規則被打破! 看一下這樣的代碼: string s1= “abcd”; string s2 = s1; 在引用計數的實現版本中,這幾句話意味著:先分配一塊記憶體給”abcd”,一個引用計數的數;s1和s2都將引用這塊記憶體,引用計數將為2。引用計數的本意是在把strings傳出functions時最佳化copy行為。 但是這種演算法並不是安全執行緒的! 如果你將s2傳給另一個線程,那麼就很可能有兩個線程企圖修改這同一塊記憶體!那將會有不可預料的行為發生。 

結論:不要多個線程使用 常字串 string s1= “abcd”; 這種編譯期處理的值? 說不明白。。。

2.pthread_create 參數傳遞指標問題

http://blog.csdn.net/jfkidear/article/details/7918425

結論:函數傳參用值,不要傳指標,或者使用 ,額外的隊列,線程池

 

linux c++ 多線程心得

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.