執行緒分為分離執行緒和非分離執行緒,分離執行緒退出時會釋放它的資源,非分離執行緒退出時,不會釋放資源,需要另乙個執行緒為它呼叫pthread_join函式或者程序退出時才會釋放資源,只有非分離執行緒才是可連線的,執行緒一旦設定為pthread_create_detach狀態(不論是建立時設定還是執行時設定)則不能再恢復到pthread_create_joinable狀態。
函式原型
作用int pthread_detach(pthread_t thread)
將非分離執行緒設定為分離執行緒,引數thread是要分離的執行緒id
int pthread_deteach( pthread_self() )
將自身執行緒設定為分離執行緒,成功返回0,失敗返回非0錯誤碼
int pthread_join(pthread_t thread,void **retval)
用於將呼叫執行緒掛起,知道引數thread所指執行緒終止執行位置
retval為thread所指執行緒返回的值,為null或其他值
建立兩個執行緒thread1、thread2,thread1列印5次"i am thread1!"後退出執行緒,並返回i的值;thread2呼叫pthread_join()函式獲取thread1的返回值並列印,之後列印5次"i am thread2!"並退出。
#include #include #include #include #include pthread_t thread1,thread2;
//執行緒的分離
void *pthread1_func(void * pra)
pthread_exit((void*)i);
}void *pthread2_func(void * pra)
while( (i++) < 5 )
pthread_exit(null);
}int main(void)
res = pthread_create(&thread2,null,pthread2_func,null);
if(res)
pthread_exit(null);
return 0;
}
執行結果:
Linux多執行緒程式設計(二) 執行緒屬性
pthread介面允許我們通過設定每個物件關聯的不同屬性來細調執行緒的行為。include int pthread attr init pthread attr t attr int pthread attr destroy pthread attr t attr 兩個函式的返回值 若成功,返回0 ...
linux多執行緒學習 二 執行緒的建立和退出
1 函式語法簡述。pthread create 標頭檔案 pthread.h 函式原型 int pthread create pthread t thread,pthread attr t attr,void start routine void void arg 函式傳入值 thread 執行緒識...
linux多執行緒學習 二 執行緒的建立和退出
1 函式語法簡述。pthread create 標頭檔案 pthread.h 函式原型 int pthread create pthread t thread,pthread attr t attr,void start routine void void arg 函式傳入值 thread 執行緒識...