併發程式設計,已成必要

2021-04-13 07:45:51 字數 1169 閱讀 1834

什麼是併發機制

處理器同時處理二個或者二個以上的任務,即為併發機制。

單核時代,併發僅是作業系統給我們的乙個假象。i/o操作速度遠遠慢於cpu處理速度(鍵鼠輸入、硬碟讀寫、網路傳輸等速度遠慢於記憶體讀寫速度,而記憶體速度又遠慢於cpu快取速度……),所以有效的利用i/o操作間隙時的cpu,成為併發機制的來由。早期併發由粗粒度的程序排程來實現,即將等待i/o操作結果的程序掛起,讓下乙個等待cpu處理的程序進入並執行,如此盡可能提高cpu的使用利用率。排程花銷更小的執行緒技術出現後,併發程式設計即指多執行緒程式設計了。

現在,已經進入多核時代,也就是真正的併發機制時代。

可笑的現象

摩爾定律:2023年,摩爾指出晶元中的電晶體和電阻器的數量每年會翻番,原因是工程師可以不斷縮小電晶體的體積。這就意味著,半導體的效能與容量將以指數級增長,並且這種增長趨勢將繼續延續下去。2023年,摩爾又修正了摩爾定律,他認為,每隔24個月,電晶體的數量將翻番。

該定律,過去一直都有效地預言著。處理器以及其它硬體裝置的效能都在大幅度地提高!

然而,軟體效能的發展卻沒有跟上這節奏,僅只在產品推出速度上提高著。軟體生產者樂觀地幻想著:硬體效能這麼高,提公升速度這麼快。根本沒有必要去擔心軟體的效能。所以一些所謂的程式設計師不需要理解演算法為何物、不曾有優化的概念!他們遵循地是,符合使用者需求的軟體,能快速推出就行!

當然,目前來說,這樣認為是無可厚非的!因為,高效能的硬體系統給予了足夠地包涵。

警鐘,摩爾定律終結

04年,狂熱追求處理器主頻的intel宣布取消4g處理器的研製計畫,轉投多核處理器。這一舉動就意味著單核處理器的摩爾定律已經到達終點。雖然許多技術人員不認同,但現實卻不容改變。

現在,多核技術已經成為intel與amd硝煙瀰漫的戰場。這也表明,兩者都在單核技術上已無計可施。

對於軟體工作者來說,仍然肆意揮霍硬體資源,或者不改變自己程式的執行方式,則會面臨被pc淘汰的可能。因為多核時代的硬體系統,工作方式已經完全改變!

併發程式設計,已成必要

現在,不研究多執行緒是如何提高效能,而只提充分利用硬體資源這一點。

完成某任務,乙個支援多執行緒運算,乙個僅是單執行緒運算,使用者肯定毫不猶豫地選擇前者。因為,廠商選擇多核來提高處理器的效能,而使用者公升級同樣只能選擇多核處理器。

如果想讓自己的軟體產品被pc接受,那麼你目前照樣可以不需知道演算法為何物、不需去優化**,但必須知道併發是怎麼回事,知道怎樣讓軟體產品充分的利用多核的硬體系統。

併發程式設計學習 併發程式設計的挑戰

死鎖 資源限制的挑戰 併發程式設計的目的是為了讓程式執行的更快,但是並不是啟動更多的執行緒,就能讓程式最大限度的併發執行。在進行併發程式設計時,如果希望通過多執行緒執行任務讓程式執行的更快,會面臨非常多的挑戰,比如上下文切換的問題,死鎖的問題,以及受限於硬體和軟體的資源限制問題 即使是單核處理器也支...

網路程式設計 併發程式設計

01 網路程式設計 軟體開發架構 osi七層協議 乙太網協議 ip 埠 tcp udp 02 tcp的三次握手四次揮手理解及面試題 03 socket套接字使用 tcp連線通訊迴圈 tcp粘包問題 struct模組 tcp傳送檔案 04 udp協議 tcp udp基於socketserver的併發 ...

python併發程式設計 程序,併發

1.程序是乙個正在執行的程式,或者說是程式執行的過程,程序是個抽象概念 程序起源於作業系統,是作業系統最核心的概念,作業系統所有其他的概念都是圍繞程序展開 研究程序最底層就是在研究作業系統底層 2.序列 程序 乙個任務完完整整的執行完畢後,在執行下乙個任務 3.併發 程序 看起來多個任務是同時執行即...