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