以前一直搞不清楚這個問題,最近看了《現代作業系統》這本書,有了點深入的了解,在此記錄一下。
1、首先來看程式和程序:
曾經我認為這兩者應該是沒有什麼區別的,實則不然。在這裡可以引用書裡的比方,假如有乙個廚師要根據乙個食譜做乙個蛋糕,那麼這個廚師就好比cpu,而食譜就是程式(以一定形式寫好的演算法),當然還有輸入資料——麵粉、糖、水等等材料,和輸出結果——蛋糕,這一整個過程就是程序,即cpu對程式進行排程執行的整個過程。程序程序,說的應該就是進行中的程式吧。
2、再來看程序和執行緒:
執行緒就好比迷你的程序,它用較少的資源,處理程序中某個特定的任務,它容易撤銷也容易建立,在許多作業系統中,建立乙個執行緒要比建立乙個程序快10~100倍。程序就是乙個大的任務,其中包含了各種小任務,交給了不同的執行緒去完成。
但是,這一點,實際上並不能很好的說明引入執行緒的原因,讓我們再深入研究一下。
有過多執行緒程式設計經驗的程式設計師都知道,比如我們寫乙個程式,程式設計了兩個任務,乙個是從ui介面中的列表顯示一些文字資料(比如微博吧),然後還有乙個任務是發出post/get請求到伺服器獲取資料,需要在獲取了資料後才能在ui中的列表顯示出文字資料,假如我們把這兩個任務寫到了同一條執行緒中,我們會發現在向伺服器發請求的時候,ui是會卡死的,因為一條執行緒中的資源有限,只能做一定規格的任務(比如移動開發中的主線程只能用於ui操作),於是只好向系統多申請點資源——建立新的執行緒用來完成向伺服器發出請求的任務。
由此,我們可以看出,引入執行緒很好地解決了資源利用問題,還有兩個很好的優點:
⑴建立速度快,資源呼叫及時——輕便快捷
⑵解決程序中的資源耦合度,讓你知道什麼資源在做什麼任務——解耦
接下來我要講的東西想必看了上面的內容的人都懂了,為什麼不乾脆直接在建立程序的時候分配所有會用到的資源?
因為怕浪費,cpu在執行乙個程式的時候經常不會用到它所有的功能,分配資源過多會造成浪費
為什麼引用執行緒,不乾脆在程序裡面建立小程序就好?
一是於理不合,不符合人的行為習慣。二是建立程序速度慢——可能是因為它有一些不必要的設定吧。
以上有部分內容為個人觀點,如有不正確的地方歡迎指出或者提問,我會及時更正。
執行緒和程序的區別
易於排程。執行緒切換比程序切換要快。虛擬記憶體空間,io裝置等 開銷小。建立執行緒比建立進行要快,所需開銷小。進展用少量資源,如棧和暫存器。提高併發性。程序可以建立多個執行緒來執行統一程式的不同任務。有利於充分發揮多處理器的功能。通過建立多執行緒的程序,每個執行緒在乙個處理器上執行,從而實現了應用程...
執行緒和程序的區別
這個問題我查了不下4次,每次都是突然想到查一下,當時明白,完了又會混淆 首先我們知道 程序 執行緒 執行緒 在乙個程式裡面的多個任務,比如賣票系統,他有退票和賣票的功能,我們就可以給他稱之為執行緒。程序 我們開啟任務管理器可以看到的是我們在系統上執行的程式稱之為執行緒 總之,乙個程式必須有乙個程序,...
執行緒和程序的區別
1.計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2.假定工廠的電力有限,一次只能供給乙個車間使用。也就是說,乙個車間開工的時候,其他車間都必須停工。背後的含義就是,單個cpu一次只能執行乙個任務。3.程序就好比工廠的車間,它代表cpu所能處理的單個任務。任一時刻,cpu...