1. 程式人生 > >任何,程序,執行緒的區別

任何,程序,執行緒的區別

答:三個詞中,任務(task)是最抽象的,是一個一般性的術語,指由軟體完成的一個活動。一個任務既可以是一個程序,也可以是一個執行緒。簡而言之,它指的是一系列共同達到某一目的的操作。例如,讀取資料並將資料放入記憶體中。這個任務可以作為一個程序來實現,也可以作為一個執行緒(或作為一箇中斷任務)來實現。

  程序(process)常常被定義為程式的執行。可以把一個程序看成是一個獨立的程式,在記憶體中有其完備的資料空間和程式碼空間。一個程序所擁有的資料和變數只屬於它自己。

  執行緒(tread)則是某一程序中一路單獨執行的程式。也就是說,執行緒存在於程序之中。一個程序由一個或多個執行緒構成,各執行緒共享相同的程式碼和全域性資料,但各有其自己的堆疊。由於堆疊是每個執行緒一個,所以區域性變數對每一執行緒來說是私有的。由於所有執行緒共享同樣的程式碼和全域性資料,它們比程序更緊密,比單獨的程序間更趨向於相互作用,執行緒間的相互作用更容易些,因為它們本身就有某些供通訊用的共享記憶體:程序的全域性資料。

  一個程序和一個執行緒最顯著的區別是:執行緒有自己的全域性資料。執行緒存在於程序中,因此一個程序的全域性變數由所有的執行緒共享。由於執行緒共享同樣的系統區域,作業系統分配給一個程序的資源對該程序的所有執行緒都是可用的,正如全域性資料可供所有執行緒使用一樣。