這個問題是基礎面試必問,作為非計算機專業的人,我今天在閱讀《clr via c#》的第25.1節才了解到區別
簡單來講:
程序是應用程式的乙個例項要使用的資源的集合。
執行緒是乙個虛擬化的cpu,或者邏輯cpu。
從概念上來講,程序與執行緒差別巨大,甚至可以說毫無關係;但是因為現在作業系統都是設計成乙個程序預設有乙個執行執行緒,且執行緒只能使用當前程序內的資源,所以容易把執行緒理解成輕量級的程序。
可以想象一下,如果作業系統有多個程序,但是只有乙個cpu,或者說只有乙個執行緒,那必然是這乙個cpu去依次順序切換不同的程序空間並去執行程序中的**,一旦**中有bug,就會帶來整個系統的崩潰。以上所說的情景當然是不可能發生的,不過這樣的想象有助於幫助理解概念。
區別了兩個概念,也就知道了程序和執行緒的使命完全不同。
程序是為了隔離:
1.隔離不同的應用程式例項。使得乙個應用程式崩潰不會影響其它的應用程式
2.隔離應用程式和核心**/資源。使得應用程式不會影響核心的穩定性
執行緒是為了執行和併發:
1.執行緒有自己的執行環境,因此為建立這種環境,執行緒有自己的開銷
2.執行緒需要排程,因此有優先順序,前台後台等概念
3.憋不出第三條了……
執行緒和程序的區別
易於排程。執行緒切換比程序切換要快。虛擬記憶體空間,io裝置等 開銷小。建立執行緒比建立進行要快,所需開銷小。進展用少量資源,如棧和暫存器。提高併發性。程序可以建立多個執行緒來執行統一程式的不同任務。有利於充分發揮多處理器的功能。通過建立多執行緒的程序,每個執行緒在乙個處理器上執行,從而實現了應用程...
執行緒和程序的區別
這個問題我查了不下4次,每次都是突然想到查一下,當時明白,完了又會混淆 首先我們知道 程序 執行緒 執行緒 在乙個程式裡面的多個任務,比如賣票系統,他有退票和賣票的功能,我們就可以給他稱之為執行緒。程序 我們開啟任務管理器可以看到的是我們在系統上執行的程式稱之為執行緒 總之,乙個程式必須有乙個程序,...
執行緒和程序的區別
1.計算機的核心是cpu,它承擔了所有的計算任務。它就像一座工廠,時刻在執行。2.假定工廠的電力有限,一次只能供給乙個車間使用。也就是說,乙個車間開工的時候,其他車間都必須停工。背後的含義就是,單個cpu一次只能執行乙個任務。3.程序就好比工廠的車間,它代表cpu所能處理的單個任務。任一時刻,cpu...