如果需要只終止某個執行緒而不終止整個執行緒,可以有三種方法: a:
從主線程函式
return.(從別的函式裡return會回到主線程,而不會直接把整個執行緒結束)
這種方法對主控執行緒不適合,從
main
函式return
相當於呼叫
exit. b:
乙個執行緒可以呼叫
pthread_cancel
終止同一程序中的另乙個執行緒。 c:
執行緒可以呼叫
pthread_exit
終止自己
同乙個程序的執行緒間,
pthread_cancel
向另乙個執行緒發終止訊號。系統不會馬上關閉被取消執行緒,只有在被取消執行緒下次系統呼叫時,才會真正結束執行緒。或呼叫
pthread_testcancel,
讓核心去檢測是否需要取消當前執行緒。
執行緒終止方式
一般來說,posix的執行緒終止有兩種情況 正常終止和非正常終止。執行緒主動呼叫pthread exit 或者從執行緒函式中return都將使執行緒正常退出,這是可預見的退出方式 非正常終止是執行緒在其他執行緒的干預下,或者由於自身執行出錯 比如訪問非法位址 而退出,這種退出方式是不可預見的。一般情...
多執行緒系列(四) 終止執行緒的方式
多執行緒系列 一 執行緒的狀態及轉換 多執行緒系列 二 執行緒的建立方式 多執行緒系列 三 執行緒常用方法 多執行緒系列 四 終止執行緒的方式 多執行緒系列 五 死鎖案例以及檢測方法 多執行緒系列 六 生產者消費者案例 多執行緒系列 七 synchronized關鍵字簡單使用以及可重入性 多執行緒系...
09之 interrupt 和執行緒終止方式
interrupt 是給執行緒設定中斷標誌 interrupted 是檢測中斷並清除中斷狀態 isinterrupted 只檢測中斷。還有重要的一點就是interrupted 作用於當前執行緒,interrupt 和isinterrupted 作用於此執行緒,即 中呼叫此方法的例項所代表的執行緒。首...