lesson2 執行緒的創造和生命

2021-07-26 18:43:29 字數 1041 閱讀 6574

1.執行緒id:

執行緒程序

識別符號型別

pthread_t

pid_t

獲取id

pthread_self()

getpid()

建立pthread_create()

fork()

pthread_t在linux中是unsigned long int型別

2.pthread_self的使用;

3.pthread_create

錯誤碼檢視:cat /usr/include/asm-generic/errno.h

4.main函式返回時,程序結束,程序內的所有執行緒將終止,可以通過呼叫pthread_exit函式等待所有執行緒結束才終止。

主線程的引數是argc,argv;普通執行緒引數void *;

主線程預設堆疊上執行,長度足夠;普通執行緒的堆疊受限,溢位將出錯。

5.主線程隨著程序建立而建立,普通執行緒通過pthread_create建立。注意,新執行緒可能在pthread_create返回前就執行了,甚至執行完畢

。6.執行緒的狀態

a.就緒狀態:執行緒能夠執行,但是在等待可用的處理器;//執行緒建立時處於就緒,或解除阻塞

b.執行狀態:執行緒正在執行,在多核系統中,可能同時有多個執行緒執行;//處理器選擇了乙個執行緒,馬上執行

c.阻塞:執行緒在等待處理器意外的其他條件//比如加鎖已被鎖住的互斥量

d.終止:執行緒從啟動函式中返回,或者呼叫pthead_exit,或者被取消。//

7.資源**

執行緒的分離屬性:分離乙個執行緒會通知系統當該執行緒結束時,其所屬的資源可以被**;沒有分離的執行緒終止時,會保留它的虛擬記憶體(堆疊,其他記憶體空間)。建立執行緒預設非分離的。

終止分離執行緒時,會釋放所有系統資源,但是你必須釋放由該執行緒占有的程式資源。malloc,mmap分配的記憶體可以在任何時候由任何執行緒釋放。條件變數、互斥量、訊號燈可以由執行緒銷毀,但是如果被鎖住是無法釋放的, 需要先解鎖。

程序和執行緒的概念以及如何創造執行緒

1 計算機的cpu承擔了所有的任務,他就像一座工廠,時刻在執行。2 cpu一次只能執行乙個任務,我們可以假定工廠的電力有限,一次只能供給乙個車間使用,也就是說乙個車間開工時,其他車間都必須停工。3 程序就好比工廠的車間,它代表著cpu所能處理的單個任務。任一時刻,cpu總是執行乙個程序,其他程序處於...

執行緒的生命週期和執行緒的同步

1 新建狀態。當建立thread類的乙個例項 物件 時,此執行緒進入新建狀態 未被啟動 2 就緒 執行緒已經被啟動,正在等待被分配給cpu時間片,也就是說此時執行緒正在就緒佇列中排隊等候得到cpu資源 3 執行 執行緒獲得cpu資源正在執行任務 run 方法 此時除非此執行緒自動放棄cpu資源或者有...

C 多執行緒的用法2 執行緒的生命週期

對於執行緒而言有兩種型別 前台執行緒,後台執行緒。前台與後台執行緒性質相同,但終止條件不同。後台執行緒 在執行過程中如果宿主程序結束,執行緒將直接終止執行 在強制終止時,執行緒即終止執行不論執行緒 是否執行完畢。前台執行緒 在執行過程中如果宿主程序結束,執行緒將繼續執行直至執行緒 執行完畢 在強制終...