執行緒以及多執行緒,多程式的選擇
我的理解是程式是指在系統中正在執行的一個應用程式;程式一旦執行就是程式,或者更專業化來說:程式是指程式執行時的一個例項,執行緒是程式的一個實體。 |
程式——資源分配的最小單位,執行緒——程式執行的最小單位。
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 多執行緒,多程式執行緒
- 多執行緒------執行緒與程式/執行緒排程/建立執行緒執行緒
- 多執行緒-程式和執行緒的概述執行緒
- 多執行緒和多執行緒同步執行緒
- 執行緒和程式基礎以及多執行緒的基本使用(iOS)執行緒iOS
- 多執行緒【執行緒池】執行緒
- 多執行緒--執行緒管理執行緒
- Java多執行緒——執行緒Java執行緒
- 執行緒與多執行緒執行緒
- VC多執行緒 C++ 多執行緒執行緒C++
- 多執行緒和多程式模型的選用執行緒模型
- 多執行緒-執行緒控制之休眠執行緒執行緒
- 多執行緒-執行緒控制之加入執行緒執行緒
- 多執行緒-執行緒控制之禮讓執行緒執行緒
- 多執行緒-執行緒控制之中斷執行緒執行緒
- 多執行緒-多執行緒常見的面試題執行緒面試題
- 多執行緒程式設計,處理多執行緒的併發問題(執行緒池)執行緒程式設計
- 多執行緒之初識執行緒執行緒
- Java多執行緒-執行緒中止Java執行緒
- Java多執行緒——執行緒池Java執行緒
- 多執行緒-執行緒概述等執行緒
- 多執行緒系列(1),多執行緒基礎執行緒
- 多執行緒系列(二):多執行緒基礎執行緒
- Python——程式、執行緒、協程、多程式、多執行緒(個人向)Python執行緒
- Java多執行緒1:程式與執行緒概述Java執行緒
- 多執行緒-執行緒控制之守護執行緒執行緒
- .NET多執行緒程式設計(1):多工和多執行緒 (轉)執行緒程式設計
- a、多執行緒執行緒
- Java多執行緒-執行緒池的使用Java執行緒
- 多執行緒(五)---執行緒的Yield方法執行緒
- 【Java多執行緒】執行緒安全的集合Java執行緒
- Python 多執行緒多程式Python執行緒
- 多執行緒-匿名內部類的方式實現多執行緒程式執行緒
- java 多執行緒守護執行緒Java執行緒
- Java多執行緒-執行緒通訊Java執行緒
- Java多執行緒-執行緒狀態Java執行緒
- Java多執行緒(2)執行緒鎖Java執行緒
- java多執行緒9:執行緒池Java執行緒