自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

多線程的執(zhí)行效率一定高于單線程嗎?

開(kāi)發(fā) 后端
什么是串行?什么是并行?串行:任務(wù)進(jìn)行排隊(duì),一個(gè)一個(gè)執(zhí)行;并行:多個(gè)任務(wù)齊頭并進(jìn)。

 [[280715]]

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

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

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

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

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

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

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

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

特點(diǎn)是要進(jìn)行大量的計(jì)算,消耗CPU資源,比如計(jì)算圓周率、對(duì)視頻進(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)存的過(guò)程,或者是從網(wǎng)絡(luò)上接收信息到本機(jī)內(nèi)存的過(guò)程)的速度遠(yuǎn)遠(yuǎn)低于CPU和內(nèi)存的速度)。

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

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

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

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

①單核:串行 > 并行。

②多核:并行 > 串行。

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

①單核:并行 > 串行。

②多核:并行 > 串行。

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

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

責(zé)任編輯:華軒 來(lái)源: 博客園
相關(guān)推薦

2020-11-09 09:33:37

多線程

2021-06-11 11:28:22

多線程fork單線程

2023-12-01 08:18:24

Redis網(wǎng)絡(luò)

2020-09-23 13:37:25

Redis6.0

2021-03-15 09:40:59

Redis單線程效率

2024-09-27 11:51:33

Redis多線程單線程

2009-07-10 09:05:20

SwingWorker

2023-08-17 14:12:17

2021-01-28 11:17:49

Python爬蟲單線程

2019-11-25 10:13:52

Redis單線程I

2020-11-17 10:20:53

Redis多線程單線程

2010-08-30 08:55:56

JavaScript引

2022-01-04 11:11:32

Redis單線程Reactor

2012-02-15 10:26:40

JavaJava Socket

2025-04-24 08:15:00

Redis單線程線程

2018-01-11 08:24:45

服務(wù)器模型詳解

2025-01-17 08:23:33

2010-01-28 16:45:44

Android單線程模

2022-07-20 07:45:15

多線程程序性能

2017-03-06 14:08:38

JavaScript單線程setTimeout
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)