歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Unix知識 >> Unix基礎知識 >> UNIX環境高級編程:線程屬性之分離屬性

UNIX環境高級編程:線程屬性之分離屬性

日期:2017/3/3 15:19:45   编辑:Unix基礎知識

說到線程的分離狀態,我認為,之所以會有這個狀態,是因為系統對某些線程的終止狀態根本不感興趣導致的。

我們知道,進程中的線程可以調用:

int pthread_join(pthread_t tid, void **rval_ptr);

來等待某個線程的終止,獲得該線程的終止狀態,並收回所占的資源。如果對線程的返回狀態不感興趣,可以將rval_ptr設置為NULL。也可以調用:

int pthread_detach(pthread_t tid);

將此線程設置為分離狀態,設置為分離狀態的線程在線程結束時,操作系統會自動收回它所占的資源。設置為分離狀態的線程,不能再調用pthread_join()等待其結束。

如果在創建線程時就知道不需要了解線程的終止狀態,那麼可以通過修改pthread_attr_t結構中的detachstate屬性,讓線程以分離狀態啟動,調用函數如下:

int pthread_attr_detach(pthread_attr_t *attr, int detachstate);

總之線程以正常狀態啟動還是以分離狀態啟動最根本的出發點是系統是否需要知道線程的終止狀態;

這兩種狀態的區別是:

正常狀態:可以由其他線程終止,回收資源。

分離狀態:不能被其他線程終止,存儲資源在它終止時由系統自動回收釋放。

作者:csdn博客 ctthuangcheng

查看本欄目更多精彩內容:http://www.bianceng.cn/OS/unix/

Copyright © Linux教程網 All Rights Reserved