1. 程式人生 > >iOS 中執行緒與程序的區別

iOS 中執行緒與程序的區別

       執行緒程序的區別和聯絡

    (1)一個執行緒只能屬於一個程序,而一個程序可以有多個執行緒,但至少有一個執行緒。執行緒是作業系統可識別的最小執行和排程單位。

   (2)資源分配給程序,同一程序的所有執行緒共享該程序的所有資源。 同一程序中的多個執行緒共享程式碼段(程式碼和常量),資料段(全域性變數和靜態變數),擴充套件段(堆儲存)。但是每個執行緒擁有自己的棧段,棧段又叫執行時段,用來存放所有區域性變數和臨時變數。

    (3)處理機分給執行緒,即真正在處理機上執行的是執行緒。

    (4)執行緒在執行過程中,需要協作同步。不同程序的執行緒間要利用訊息通訊的辦法實現同步。

    程序和執行緒並不是一一對應的,一個程式執行在不同的資料集上就成為不同的程序,可以用程序控制塊來唯一地標識每個程序。而這一點正是程式無法做到的,由於程式沒有和資料產生直接的聯絡,即使是執行不同的資料的程式,他們的指令的集合依然是一樣的,所以無法唯一地標識出這些運行於不同資料集上的程式。一般來說,一個程序肯定有一個與之對應的程式,而且只有一個。而一個程式有可能沒有與之對應的程序(因為它沒有執行),也有可能有多個程序與之對應(執行在幾個不同的資料集上)。