兩個程序悲催的進化旅程
后記:用這個漫畫是想講述進程、線程、協程這些基本概念的來龍去脈,為什么會出現這種技術,解決了什么問題。其實計算機發展到今天,本質上沒什么變化,就是計算能力越來越快,存儲能力越來越大。
多進程的出現一方面是因為我們要充分利用CPU的能力,因為它實在是太快了,比硬盤快幾百萬倍,遇到硬盤操作的時候,堅決不能讓它等著,在那里空轉,一定要切換到另外的程序去。 另外一方面是人們需要電腦“同時”運行多個程序:一邊上網一邊聽歌。
線程的出現主要是為了提高響應性,漫畫中舉了一個界面不能響應的例子,同樣的問題也會出現在服務器端,多個用戶請求發給了服務器,當一個請求在等待IO操作的時候,其他請求可以用別的線程來處理。但是線程多了,創建的開銷、切換的開銷也會很大,所以考慮得考慮復用,形成線程池。
協程通過合作式調度,避免了多線程編程中各個各樣煩人的、容易出錯的問題:加鎖,通知,阻塞。
【本文為51CTO專欄作者“劉欣”的原創稿件,轉載請通過作者微信公眾號coderising獲取授權】