在任何時間點上,執行緒都是可結合的(joinable)或者分離的(detached)。
由上可知,執行緒的分離狀態決定了決定了執行緒以何種方式終結自己。
預設情況下,執行緒是結合狀態,只有當主線程中的pthread_join()
函式返回時,該執行緒的資源才被**。此時,才能人為該執行緒終止了。
如果執行緒是分離狀態,執行緒自己執行結束,執行緒資源馬上會被系統**,執行緒終止。
如果我們建立執行緒時不需要了解執行緒的終止狀態,可以把執行緒設定為分離狀態。
可以設定的屬性值為:
注意:如果乙個執行緒是分離狀態,而它執行的又特別快,它很可能在pthread_create
函式返回之前就終止了;它終止以後該執行緒號和資源就移交給其他的執行緒使用,這樣呼叫pthread_create
的執行緒就得到了錯誤的執行緒號。避免該情況的措施之一就是採取同步措施,最簡單的方法之一就是該執行緒裡面呼叫pthread_cond_timewait
函式,讓執行緒休眠一會兒,以流出足夠的時間讓函式pthread_create
返回。但是,不能使用諸如wait()
之類的函式,因為這是程序級別的函式,它會造成整個程序的休眠,並不能解決執行緒同步的問題。
C多執行緒程式設計 執行緒的屬性
3 執行緒的分離狀態 4 執行緒的優先順序 5 執行緒的棧位址 6 執行緒棧大小 7 執行緒的棧保護區大小 8 執行緒的排程策略 1 一般使用pthread create函式建立乙個執行緒,使用預設引數,即將該函式的第二個引數設為null,對大多數程式來說,使用預設屬性就夠了,但我們還是有必要來了解...
Java多執行緒 執行緒狀態
from 一.執行緒狀態型別 1.新建狀態 new 新建立了乙個執行緒物件。2.就緒狀態 runnable 執行緒物件建立後,其他執行緒呼叫了該物件的start 方法。該狀態的執行緒位於可執行執行緒池中,變得可執行,等待獲取cpu的使用權。3.執行狀態 running 就緒狀態的執行緒獲取了cpu,...
Java多執行緒 執行緒狀態
一.執行緒狀態型別 1.新建狀態 new 新建立了乙個執行緒物件。2.就緒狀態 runnable 執行緒物件建立後,其他執行緒呼叫了該物件的start 方法。該狀態的執行緒位於可執行執行緒池中,變得可執行,等待獲取cpu的使用權。3.執行狀態 running 就緒狀態的執行緒獲取了cpu,執行程式 ...