您好,登錄后才能下訂單哦!
這篇文章主要講解了“編程開發中多線程一定比單線程執行效率高嗎”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“編程開發中多線程一定比單線程執行效率高嗎”吧!
一、什么是串行?什么是并行?
串行:任務進行排隊,一個一個執行;
并行:多個任務齊頭并進。
二、單核、多核這兩種情況下的并行。
單核情況下的并行:并非真的是多個任務同時進行的,是需要在這任務之間來回切換(即上下文切換)的。
多核情況下的并行:是幾核,就能真正做到幾核同時執行各自的任務。
三、任務的兩大類型。
“計算密集型”任務:
特點是要進行大量的計算,消耗CPU資源,比如計算圓周率、對視頻進行高清解碼等等,全靠CPU的運算能力。
這種計算密集型任務雖然也可以用多任務完成,但是任務越多,花在任務切換的時間就越多,CPU執行任務的效率就越低,所以,要高效地利用CPU,計算密集型任務同時進行的數量應當等于CPU的核心數。
“IO密集型”任務:
涉及到網絡、磁盤IO的任務都是IO密集型任務,這類任務的特點是CPU消耗很少,任務的大部分時間都在等待IO操作完成(因為IO(指把內容從硬盤上讀到內存的過程,或者是從網絡上接收信息到本機內存的過程)的速度遠遠低于CPU和內存的速度)。
對于IO密集型任務,任務越多,CPU效率越高,但也有一個限度。常見的大部分任務都是IO密集型任務,比如Web應用。
四、看完了上面幾點,我們就可以對“并行的執行效率一定會高于串行嗎”這個問題作出解答了。
答:并不一定,取決于機器的核數和任務類型。
1.如果是執行多個計算密集型任務:
①單核:串行 > 并行。
②多核:并行 > 串行。
2.如果是執行多個IO密集型任務:
①單核:并行 > 串行。
②多核:并行 > 串行。
在多核或多CPU,或支持Hyper-threading的CPU上使用多線程程序設計的好處是顯而易見,即提高了程序的執行吞吐率。
在單CPU或單核的計算機上,使用多線程技術,也可以把進程中負責I/O處理、人機交互而常被阻塞的部分與密集計算的部分分開來執行,編寫專門的workhorse線程執行密集計算,從而提高了程序的執行效率。
感謝各位的閱讀,以上就是“編程開發中多線程一定比單線程執行效率高嗎”的內容了,經過本文的學習后,相信大家對編程開發中多線程一定比單線程執行效率高嗎這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。