溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

編程開發(fā)中多線程一定比單線程執(zhí)行效率高嗎

發(fā)布時(shí)間:2021-09-03 19:02:41 來源:億速云 閱讀:155 作者:chen 欄目:編程語言

這篇文章主要講解了“編程開發(fā)中多線程一定比單線程執(zhí)行效率高嗎”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“編程開發(fā)中多線程一定比單線程執(zhí)行效率高嗎”吧!

 

一、什么是串行?什么是并行?

串行:任務(wù)進(jìn)行排隊(duì),一個(gè)一個(gè)執(zhí)行;

并行:多個(gè)任務(wù)齊頭并進(jìn)。

二、單核、多核這兩種情況下的并行。

單核情況下的并行:并非真的是多個(gè)任務(wù)同時(shí)進(jìn)行的,是需要在這任務(wù)之間來回切換(即上下文切換)的。

多核情況下的并行:是幾核,就能真正做到幾核同時(shí)執(zhí)行各自的任務(wù)。

三、任務(wù)的兩大類型。

“計(jì)算密集型”任務(wù):

特點(diǎn)是要進(jìn)行大量的計(jì)算,消耗CPU資源,比如計(jì)算圓周率、對視頻進(jìn)行高清解碼等等,全靠CPU的運(yùn)算能力。

這種計(jì)算密集型任務(wù)雖然也可以用多任務(wù)完成,但是任務(wù)越多,花在任務(wù)切換的時(shí)間就越多,CPU執(zhí)行任務(wù)的效率就越低,所以,要高效地利用CPU,計(jì)算密集型任務(wù)同時(shí)進(jìn)行的數(shù)量應(yīng)當(dāng)?shù)扔贑PU的核心數(shù)。

“IO密集型”任務(wù):

涉及到網(wǎng)絡(luò)、磁盤IO的任務(wù)都是IO密集型任務(wù),這類任務(wù)的特點(diǎn)是CPU消耗很少,任務(wù)的大部分時(shí)間都在等待IO操作完成(因?yàn)镮O(指把內(nèi)容從硬盤上讀到內(nèi)存的過程,或者是從網(wǎng)絡(luò)上接收信息到本機(jī)內(nèi)存的過程)的速度遠(yuǎn)遠(yuǎn)低于CPU和內(nèi)存的速度)。

對于IO密集型任務(wù),任務(wù)越多,CPU效率越高,但也有一個(gè)限度。常見的大部分任務(wù)都是IO密集型任務(wù),比如Web應(yīng)用。

四、看完了上面幾點(diǎn),我們就可以對“并行的執(zhí)行效率一定會(huì)高于串行嗎”這個(gè)問題作出解答了。

答:并不一定,取決于機(jī)器的核數(shù)和任務(wù)類型。

1.如果是執(zhí)行多個(gè)計(jì)算密集型任務(wù):

①單核:串行 > 并行。

②多核:并行 > 串行。

2.如果是執(zhí)行多個(gè)IO密集型任務(wù):

①單核:并行 > 串行。

②多核:并行 > 串行。

在多核或多CPU,或支持Hyper-threading的CPU上使用多線程程序設(shè)計(jì)的好處是顯而易見,即提高了程序的執(zhí)行吞吐率。

在單CPU或單核的計(jì)算機(jī)上,使用多線程技術(shù),也可以把進(jìn)程中負(fù)責(zé)I/O處理、人機(jī)交互而常被阻塞的部分與密集計(jì)算的部分分開來執(zhí)行,編寫專門的workhorse線程執(zhí)行密集計(jì)算,從而提高了程序的執(zhí)行效率。

感謝各位的閱讀,以上就是“編程開發(fā)中多線程一定比單線程執(zhí)行效率高嗎”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對編程開發(fā)中多線程一定比單線程執(zhí)行效率高嗎這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI