#http://www.cnblogs.com/fuchongjundream/p/3829508.html •進程(process): 狹義定義:進程就是一段程序的執行過程。 廣義定義:進程是一個具有獨立功能的程序關於某個數據集合的一次運行活動。他是操作系統動態執行的基本單元,在傳統的操作系統中,進程即是基本的分配單元,也是基本的執行單元。 1)進程是一個實體,每個進程都有自己的地址空間,一般情況下,包含文本區域、數據區域、堆棧 2)進程是執行中的程序,程序是一個沒有生命的實體,只有處理器賦予程序生命時,他才能成為一個活動的實體,我們稱之為進程 3)進程本身不會運行,是線程的容器。線程不能單獨執行,必須組成進程 4)一個程序至少有一個進程,一個進程至少有一個線程 5)對於操作系統來講,一個任務就是一個進程,比如打開一個瀏覽器就是啟動一個瀏覽器進程。打開一個記事本就是啟動一個記事本進程,打開2個記事本就是啟動2個記事本進程 6)有些進程還不止同時做一件事情。比如打開word,他可以同時進行打字、打印、拼音檢查等等,在一個進程內部,要同時干多件事情。 進程狀態: 1)就緒:獲取出CPU外的所有資源、只要處理器分配資源就可以馬上執行 2)運行:獲得處理器分配的資源,程序開始執行 3)阻塞:當程序條件不夠的時候,需要等待提交滿足的時候才能執行。 •線程: 1)一個進程中至少有一個線程,不然就沒有存在的意義
2)在一個進程內部,要同時干多件事情,就需要同時運行多個子任務,我們把進程內的這些子任務叫做線程
3)多線程就是為了同步完成多項任務(在單個程序中同時運行多個線程完成不同的任務和工作),不是為了提高運行效率,而是為了提高資源使用效率來提高系統的效率
4)一個簡單的比喻,多線程就像是火車上的每節車廂,而進程就是火車
5)線程是程序執行流的最小單元。一個標准的線程由當前的線程ID、當前指令指針、寄存器和堆棧組成
6)同一個進程中的多個線程之間可以並發執行
線程狀態:
1)就緒:指線程具備運行的所有條件,邏輯上可以運行,在等待處理機
2)運行:指線程占用處理機正在運行
3)阻塞:線程在等待一個事件,邏輯上不可執行
如果我們要同時執行多個任務怎么辦?
1)啟動多個進程,每個進程雖然只有一個線程,但是多個進程可以一塊執行多個任務
2)啟動一個進程,在一個進程內啟動多個線程,這樣多個線程也可以一塊執行多個任務
多任務:
1)一邊瀏覽網頁、一邊聽歌、一邊看電影;這就是多任務。