1. 程式人生 > >高並發編程-01-並發編程的發展歷史

高並發編程-01-並發編程的發展歷史

單個 發展 多進程 margin 獨立 協同 帶來 時間 fan

其實,在早期計算機並沒有包含操作系統,這個時候,這個計算機只跑一個程序,這個程序獨享計算機的所有資源,這個時候不存在什麽並發問題,但是對計算機的資源來說,確實是一種浪費。

於是,操作系統出現了,操作系統改變了這種現狀,讓計算機可以運行多個程序,並且不同的程序占用獨立的計算機資源,如內存,CPU等。

操作系統的出現,主要有以下幾點原因:
1,資源利用率:可以在其他程序執行過程出現等待的時候,去執行其他程序,從而提高程序
的利用率。什麽時候會出現等待,比如輸入操作或輸出操作。
2,公平性:所有的程序可以共享計算機資源,一種有效的方式是通過時間片的方式來讓程序共享計算機資源。
3,在編寫多任務程序時,可以一個程序執行一個任務,必要時,程序之間進行通信即可。

當計算機從單程序變成多程序之後,這個時候又發展出了多線程,線程是進程裏面的每個執行控制流,或叫執行路線。如果沒有明確的協同機制,那麽每個線程將獨立運行,共享著進程的內存及CPU資源等等。

多線程的運行模式,給我們帶來了什麽好處?
發揮現代CPU的特性,提高吞吐率

早期大家應該聽說過摩爾定律,但隨著CPU通過提高時鐘頻率來提升性能已變得越來越困難,處理器的產商,比如因特爾,AMD,都開始在單個芯片上放置多個處理器核,所以我們現在的個人計算機基本都是這種架構。

現代計算機的調度單位是線程,所以假設你的電腦是一個4核處理器,當你的程序只有一個線程在運行的時候,那這個時候就會有75%的CPU資源無法使用,這簡直是一種浪費。

使用多線程就是為了讓系統有更高的吞吐率。比如當程序等待某個同步IO完成操作時,這個時候,CPU處理器處於空閑狀態,如果程序是單線程的,那麽只能等待,再進行下一步操作,反之,就可以並發進行。舉個生活的例子,老婆讓我洗碗,我又想看NBA,那怎麽辦,很簡單,我可以一邊洗碗,一邊看NBA,而不用等到洗完碗,再去看NBA

總結下,發展的歷程

單進程計算機------->多進程的計算機(操作系統)------>多線程的計算機(提高CPU的利用率,簡化開發模式)

生活中的案例,我們接觸的軟件,都有多線程的影子,大家不妨可以想想都有哪些?


高並發編程-01-並發編程的發展歷史