互斥鎖std::mutex是一種最常見的線程間同步的手段,但是在有些情況下不太高效宫峦。 假設(shè)想實(shí)現(xiàn)一個(gè)簡單的消費(fèi)者生產(chǎn)者模型岔帽,一個(gè)線程往隊(duì)列中放入...
互斥鎖保證了線程間的同步,但是卻將并行操作變成了串行操作导绷,這對(duì)性能有很大的影響犀勒,所以我們要盡可能的減小鎖定的區(qū)域,也就是使用細(xì)粒度鎖妥曲。 這一點(diǎn)l...
死鎖 如果你將某個(gè)mutex上鎖了贾费,卻一直不釋放,另一個(gè)線程訪問該鎖保護(hù)的資源的時(shí)候檐盟,就會(huì)發(fā)生死鎖褂萧,這種情況下使用lock_guard可以保證析...
競爭條件 并發(fā)代碼中最常見的錯(cuò)誤之一就是競爭條件(race condition)。而其中最常見的就是數(shù)據(jù)競爭(data race)葵萎,從整體上來看...
構(gòu)造函數(shù)的參數(shù) std::thread類的構(gòu)造函數(shù)是使用可變參數(shù)模板實(shí)現(xiàn)的导犹,也就是說,可以傳遞任意個(gè)參數(shù)陌宿,第一個(gè)參數(shù)是線程的入口函數(shù)锡足,而后面的若...
什么是并發(fā) 并發(fā)在生活中隨處可見,邊走路邊說話壳坪,邊聽歌邊寫代碼。計(jì)算機(jī)術(shù)語中的"并發(fā)"掰烟,指的是在單個(gè)系統(tǒng)里同時(shí)執(zhí)行多個(gè)獨(dú)立的活動(dòng)爽蝴,而不是順序的一...
引言 大家都知道new了一個(gè)變量沐批,需要使用delete釋放內(nèi)存,而new出了一個(gè)數(shù)組蝎亚,需要使用對(duì)應(yīng)的delete[]釋放內(nèi)存九孩。但我好像在哪看見過...
C#、Java发框、python和go等語言中都有垃圾自動(dòng)回收機(jī)制躺彬,在對(duì)象失去引用的時(shí)候自動(dòng)回收,而且基本上沒有指針的概念梅惯,而C++語言不一樣宪拥,C+...
c++中引入了右值引用和移動(dòng)語義铣减,可以避免無謂的復(fù)制她君,提高程序性能。有點(diǎn)難理解葫哗,于是花時(shí)間整理一下自己的理解缔刹。 左值、右值 C++中所有的值都必...