執行緒與程序

2021-08-25 05:59:51 字數 771 閱讀 5499

程序和執行緒都是乙個時間段的描述,是cpu工作時間段的描述。不過是顆粒大小不同:

1.計算機的核心是cpu,承擔所有計算任務,就像一座工廠。假定工廠的電力有限,一次只能給乙個車間使用。也就是說,乙個車間開工的時候,其他車間都必須停工。背後的含義就是說單個cpu一次只能執行乙個任務。

2.程序就像工廠的車間,它代表cpu所能處理的單個任務。任意時刻,cpu總是執行乙個程序,其他程序處於非執行(等待)狀態。

3.乙個車間裡可以有很多任務人。他們協同完成乙個任務。執行緒就好比車間裡的工人。乙個程序可以包括多個執行緒。車間的空間是工人們共享的,比如許多房間是每個工人都可以進出的。這象徵乙個程序的記憶體空間是共享的,每個執行緒都可以使用這些共享記憶體。

4.可是每間房間的大小不同,有些房間最多只能容納乙個人,比如廁所。裡面有人的時候,其他人就不能進去了。這代表乙個執行緒使用某些共享記憶體時,其他執行緒必須等它結束,才能使用這一塊記憶體。乙個防止他人進入的簡單方法,就是門口加一把鎖。先到的人鎖上門,後到的人看到上鎖,就在門口排隊,等鎖開啟再進去。這就叫"互斥鎖"(mutual exclusion,縮寫 mutex),防止多個執行緒同時讀寫某一塊記憶體區域。

5.還有些房間可以同時容納n個人,比如廚房。也就是說,如果人數大於n,多出來的人只能在外面等著。這好比某些記憶體區域,只能供給固定數目的執行緒使用。這時的解決方法,就是在門口掛n把鑰匙。進去的人就取一把鑰匙,出來時再把鑰匙掛回原處。後到的人發現鑰匙架空了,就知道必須在門口排隊等著了。這種做法叫做"訊號量"(semaphore),用來保證多個執行緒不會互相衝突。

程序與執行緒

程序 process 管理單元,管理分配應用程式的資料,的記憶體空間.執行緒 thread 執行單元,執行緒負責執行乙個預先編排好的 段,執行 棧是基於執行緒的.乙個應用程式啟動的時候,程序自動建立,並且會預設建立主線程,主線程負責執行main 方法.thread t new thread new ...

程序與執行緒

程序 是擁有資源的實體,包括 1。乙個程序有乙個虛擬位址空間,不同程序位於不同的 虛擬位址空間中。程序之間若要通訊,必須通過作業系統 的功能呼叫 ipc 2。程序擁有其他資源,例如開啟的檔案和i o裝置。程序結束時,作業系統會自動釋放該程序擁有的所有資源。例如,如果 open乙個檔案而不close它...

程序與執行緒

程序包括 1 私有的虛位址空間 2 可執行程式 與資料 3 開啟系統資源列表控制代碼 4 安全訪問標誌 5 程序id 6 至少有乙個執行執行緒 執行緒包括 1 一組cpu暫存器狀態 2 兩個堆疊 系統態與使用者態 3 tls 執行緒區域性儲存區 4 執行緒id 5 安全特性 因此程序是不活潑的,它從...