執行緒以及多執行緒,多程式的選擇

安全劍客發表於2019-04-02
我的理解是程式是指在系統中正在執行的一個應用程式;程式一旦執行就是程式,或者更專業化來說:程式是指程式執行時的一個例項,執行緒是程式的一個實體。

程式——資源分配的最小單位,執行緒——程式執行的最小單位。
執行緒以及多執行緒,多程式的選擇執行緒以及多執行緒,多程式的選擇

執行緒程式的區別體現在幾個方面:

0:因為程式擁有獨立的堆疊空間和資料段,所以每當啟動一個新的程式必須分配給它獨立的地址空間,建立眾多的資料表來維護它的程式碼段、堆疊段和資料段,這對於多程式來說十分“奢侈”,系統開銷比較大,而執行緒不一樣,執行緒擁有獨立的堆疊空間,但是共享資料段,它們彼此之間使用相同的地址空間,共享大部分資料,比程式更節儉,開銷比較小,切換速度也比程式快,效率高,但是正由於程式之間獨立的特點,使得程式安全性比較高,也因為程式有獨立的地址空間,一個程式崩潰後,在保護模式下不會對其它程式產生影響,而執行緒只是一個程式中的不同執行路徑。一個執行緒死掉就等於整個程式死掉。

1:體現在通訊機制上面,正因為程式之間互不干擾,相互獨立,程式的通訊機制相對很複雜,譬如管道,訊號,訊息佇列,共享記憶體,套接字等通訊機制,而執行緒由於共享資料段所以通訊機制很方便。

2:屬於同一個程式的所有執行緒共享該程式的所有資源,包括檔案描述符。而不同的程式相互獨立。

3:執行緒又稱為輕量級程式,程式有程式控制塊,執行緒有執行緒控制塊;

4:執行緒必定也只能屬於一個程式,而程式可以擁有多個執行緒而且至少擁有一個執行緒;

5:體現在程式結構上,舉一個簡明易懂的列子:當我們使用程式的時候,我們不自主的使用if else巢狀來判斷pid,使得程式結構繁瑣,但是當我們使用執行緒的時候,基本上可以甩掉它,當然程式內部執行功能單元需要使用的時候還是要使用,所以執行緒對程式結構的改善有很大幫助。

程式與執行緒的選擇取決以下幾點:

0:需要頻繁建立銷燬的優先使用執行緒;因為對程式來說建立和銷燬一個程式代價是很大的。

1:執行緒的切換速度快,所以在需要大量計算,切換頻繁時用執行緒,還有耗時的操作使用執行緒可提高應用程式的響應

2:因為對CPU系統的效率使用上執行緒更佔優,所以可能要發展到多機分佈的用程式,多核分佈用執行緒;

3:並行操作時使用執行緒,如C/S 的伺服器端併發執行緒響應使用者的請求;

4:需要更穩定安全時,適合選擇程式;需要速度時,選擇執行緒更好。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2640056/,如需轉載,請註明出處,否則將追究法律責任。

相關文章