6.切勿对STL容器的线程安全性有不切实际的依赖
生活随笔
收集整理的這篇文章主要介紹了
6.切勿对STL容器的线程安全性有不切实际的依赖
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
STL自身對(duì)多線程的支持非常有限。對(duì)于STL,你能期望的是:
在需要修改STL容器或這調(diào)用STL算法時(shí)需要自己加鎖。
為了實(shí)現(xiàn)異常安全,最好不要手動(dòng)加鎖解鎖,多使用RAII。
例如多使用std::lock_guard(),std::lock_guard是RAII模板類的簡單實(shí)現(xiàn),功能簡單。
std::lock_guard 在構(gòu)造函數(shù)中進(jìn)行加鎖,析構(gòu)函數(shù)中進(jìn)行解鎖,即使遭遇異常,依舊可以保證鎖被釋放。
C++保證,如果有異常被拋出,局部對(duì)象會(huì)被析構(gòu)。
為了縮小RAII類對(duì)象的作用域,可以通過使用“{ }”,使對(duì)象提前析構(gòu)、釋放鎖、減小代碼被鎖區(qū)間。
? ?std::vector<int> datas;std::mutex oneMutex;...{std::lock_guard(one);... // 操作datas} 與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的6.切勿对STL容器的线程安全性有不切实际的依赖的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 5.慎重选择删除元素的方法
- 下一篇: 7.使用reserve避免不必要的内存分