新聞中心
linux線程同步和進(jìn)程同步的區(qū)別?
線程同步:多線程編程中,解決共享資源沖突的問題進(jìn)程同步:多進(jìn)程編程中,解決共享資源沖突的問題但是部分同學(xué)對(duì)線程同步和進(jìn)程同步研究得不夠深入,比如互斥鎖和條件變量能不能同時(shí)用于線程同步和進(jìn)程同步,本質(zhì)上有什么區(qū)別。首先我們知道,linux下每個(gè)進(jìn)程都有自己的獨(dú)立進(jìn)程空間,假設(shè)A進(jìn)程和B進(jìn)程各有一個(gè)互斥鎖,這個(gè)鎖放在進(jìn)程的全局靜態(tài)區(qū),那么AB進(jìn)程都是無法感知對(duì)方的互斥鎖的。

互斥鎖和條件變量出自Posix.1線程標(biāo)準(zhǔn),它們總是可以用來同步一個(gè)進(jìn)程內(nèi)的各個(gè)線程的。
如果一個(gè)互斥鎖或者條件變量存放在多個(gè)進(jìn)程共享的某個(gè)內(nèi)存區(qū)中,那么Posix還允許它用在這些進(jìn)程間的同步??吹竭@里,是不是發(fā)現(xiàn)點(diǎn)了什么,線程同步和進(jìn)程同步的本質(zhì)區(qū)別在于鎖放在哪,放在私有的進(jìn)程空間還是放在多進(jìn)程共享的空間,并且看鎖是否具備進(jìn)程共享的屬性,
linux 多個(gè)窗口命令是多線程嘛?
在Linux中,多個(gè)窗口(終端窗口)運(yùn)行的命令通常不是多線程,而是多進(jìn)程。每個(gè)終端窗口都可以運(yùn)行一個(gè)或多個(gè)獨(dú)立的進(jìn)程,這些進(jìn)程可以并行運(yùn)行。每個(gè)進(jìn)程都有自己的內(nèi)存空間和資源,相互之間不共享內(nèi)存,因此它們是獨(dú)立的。多線程是在同一進(jìn)程內(nèi)并發(fā)運(yùn)行的多個(gè)執(zhí)行線程,它們共享進(jìn)程的內(nèi)存空間。
c語言如何同時(shí)執(zhí)行兩個(gè)不同的循環(huán)?
無法同時(shí)執(zhí)行兩個(gè)不同的循環(huán),但是可以使用“多線程”或“多進(jìn)程”的方式用c語言同時(shí)執(zhí)行多個(gè)任務(wù),并行完成不同的循環(huán)。
1、多線程的方式即表示程序內(nèi)部有多個(gè)獨(dú)立的控制流,每個(gè)線程執(zhí)行不同的任務(wù),進(jìn)而提高程序的并發(fā)性;2、多進(jìn)程的方式則是在操作系統(tǒng)中引入多個(gè)進(jìn)程,每個(gè)進(jìn)程都運(yùn)行獨(dú)立的代碼,各個(gè)進(jìn)程之間利用進(jìn)程間通信機(jī)制通信。
這些方法不僅可以執(zhí)行多個(gè)循環(huán),也能同時(shí)運(yùn)行多個(gè)任務(wù),具備高效性、可擴(kuò)展性、高并發(fā)性。
cpu多核心多線程有什么用處?
線程不是越多越好,線程切換也是要開銷的,當(dāng)增加一個(gè)線程的時(shí)候,增加的額外開銷要小于該線程能夠消除的阻塞時(shí)間,這才叫物有所值。
Linux自從2.6內(nèi)核開始,就會(huì)把不同的線程交給不同的核心去處理。Windows也從NT.4.0開始支持這一特性。
使用多線程要分四種情況討論:
a.多核CPU——計(jì)算密集型任務(wù)。此時(shí)要盡量使用多線程,可以提高任務(wù)執(zhí)行效率,例如加密解密,數(shù)據(jù)壓縮解壓縮(視頻、音頻、普通數(shù)據(jù)),否則只能使一個(gè)核心滿載,而其他核心閑置。
b.單核CPU——計(jì)算密集型任務(wù)。此時(shí)的任務(wù)已經(jīng)把CPU資源100%消耗了,就沒必要也不可能使用多線程來提高計(jì)算效率了;相反,如果要做人機(jī)交互,最好還是要用多線程,避免用戶沒法對(duì)計(jì)算機(jī)進(jìn)行操作。
c.單核CPU——IO密集型任務(wù),使用多線程還是為了人機(jī)交互方便,
d.多核CPU——IO密集型任務(wù),這就更不用說了,跟單核時(shí)候原因一樣。
隨著操作系統(tǒng)越來越臃腫復(fù)雜、應(yīng)用軟件越來越強(qiáng)大復(fù)雜,對(duì)CPU運(yùn)算能力的要求必定越來越高。早年的單核(單線程)CPU,即使主頻再高也是無法有效應(yīng)對(duì)的,更何況受制程工藝限制,CPU的主頻無法無節(jié)制的提升,十年前的CPU最高主頻和現(xiàn)在主流CPU的主頻相比,相差不是很大,就說明了問題。
多線程(多核心)CPU可以將龐大復(fù)雜的預(yù)算任務(wù)分解成多個(gè),交由不同的核心(線程)并行處理,這樣大大減輕了每個(gè)線程的運(yùn)算負(fù)擔(dān),提升了運(yùn)算效率。
就好比一個(gè)瓦匠師傅砌墻速度再快,他自己一個(gè)人砌墻的效率也是不如八個(gè)水平一般的師傅同時(shí)砌墻的總速度。
到此,以上就是小編對(duì)于linux 多線程同步的問題就介紹到這了,希望這4點(diǎn)解答對(duì)大家有用。
網(wǎng)站欄目:linux多線程同步的方法是什么
瀏覽路徑:http://fisionsoft.com.cn/article/ccscpjo.html


咨詢
建站咨詢
