日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pthread_detach函数

發布時間:2023/11/30 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pthread_detach函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

int pthread_detach(pthread_t thread);??? 成功:0;失敗:錯誤號

作用:從狀態上實現線程分離,注意不是指該線程獨自占用地址空間。

線程分離狀態:指定該狀態,線程主動與主控線程斷開關系。線程結束后(不會產生僵尸線程),其退出狀態不由其他線程獲取,而直接自己自動釋放(自己清理掉PCB的殘留資源)。網絡、多線程服務器常用。

進程若有該機制,將不會產生僵尸進程。僵尸進程的產生主要由于進程死后,大部分資源被釋放,一點殘留資源仍存于系統中,導致內核認為該進程仍存在。(注意進程沒有這一機制

也可使用 pthread_create函數參2(線程屬性)來設置線程分離。

一般情況下,線程終止后,其終止狀態一直保留到其它線程調用pthread_join獲取它的狀態為止(或者進程終止被回收了)。但是線程也可以被置為detach狀態,這樣的線程一旦終止就立刻回收它占用的所有資源,而不保留終止狀態。不能對一個已經處于detach狀態的線程調用pthread_join,這樣的調用將返回EINVAL錯誤(22號錯誤)。也就是說,如果已經對一個線程調用了pthread_detach就不能再調用pthread_join了。

//使用pthread_detach函數實現線程分離

#include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <pthread.h>void *tfn(void *arg) {int n = 3;while (n--) {printf("thread count %d\n", n);sleep(1);}//return (void *)1;pthread_exit((void *)1); }int main(void) {pthread_t tid;void *tret;int err;#if 0pthread_attr_t attr; /*通過線程屬性來設置游離態(分離態)*/pthread_attr_init(&attr);pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);pthread_create(&tid, &attr, tfn, NULL);#elsepthread_create(&tid, NULL, tfn, NULL);pthread_detach(tid); //讓線程分離 ----自動退出,無系統殘留資源#endifwhile (1) {err = pthread_join(tid, &tret);printf("-------------err= %d\n", err);if (err != 0)fprintf(stderr, "thread_join error: %s\n", strerror(err));elsefprintf(stderr, "thread exit code %d\n", (int)tret);sleep(1);}return 0; }

[root@localhost 01_pthread_test]# ./pthrd_detach

-------------err= 22??? ???//可見錯誤號是22

thread count 2

thread_join error: Invalid argument? //錯誤號對應的詳細解釋

thread count 1

-------------err= 22

thread_join error: Invalid argument

-------------err= 22

thread count 0

thread_join error: Invalid argument

-------------err= 22

thread_join error: Invalid argument

-------------err= 22

thread_join error: Invalid argument

分析:

  • 使用pthread_detach函數實現線程分離時,應當先創建線程(pthread_create),然后再用pthread_detach實現該線程的分離。因此,這種方式與修改線程屬性來實現線程分離的方法相比,不會發生在線程創建函數還未來得及返回時子線程提前結束導致返回的線程號是錯誤的線程號的情況。因為采用這種方法,即使子線程提前結束(先于pthread_create返回),但是子線程還未處于分離狀態,因此其PCB的殘留信息依然存在,如線程號等一些系統資源,所以線程號等系統資源仍被占據,還未分配出去,所以創建函數返回的線程號依然是該線程的線程號;
  • 對處于分離狀態的線程進行回收,會出現錯誤,且錯誤編號為22;
  • 還可采用修改線程屬性的方法來實現線程分離。
  • 總結

    以上是生活随笔為你收集整理的pthread_detach函数的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 久久国产精品波多野结衣 | 久久精品99久久 | 影音先锋成人资源网站 | 日本成人社区 | 极品尤物在线观看 | 亚洲一区二区精品在线观看 | 午夜影院h| 插女生下面 | 欧美骚视频| 国产女主播一区 | 亚洲视频一区二区三区在线观看 | 四虎在线免费视频 | 亚欧洲精品在线视频免费观看 | 在线观看欧美亚洲 | av图区| 亚洲最大黄色网址 | 天天射天天操天天干 | 日本www视频在线观看 | 给我看免费高清在线观看 | 99精品久久久久久中文字幕 | 亚洲综合av一区二区 | 日本免费成人 | 国产精品爽爽久久久久久 | 91a视频| 亚洲乱轮视频 | 欧美69影院 | jizz俄罗斯| 国产在线拍揄自揄拍无码视频 | 日韩专区av | 久久乐国产精品 | 日韩免费高清视频网站 | 国产做受入口竹菊 | 日本在线视频www | 日本久久黄色 | www.香蕉视频.com| 国产原创在线播放 | 少妇性生活视频 | 999资源站 | 鲁丝av| 国产精品色在线网站 | 免费午夜视频 | 三级伦理片 | 亚洲一区二区三区四区在线播放 | 老汉av| 一本一道人人妻人人妻αv 九一在线视频 | 免费一级a毛片夜夜看 | 黄色a一级片 | 久久久久久久久久久国产精品 | 日韩欧美大片 | 欧洲国产视频 | 亚洲欧美另类中文字幕 | 亚洲一区二区免费视频 | 欧美xo影院 | 日韩小视频网站 | 秘密基地免费观看完整版中文 | 欧美xxxx日本和非洲 | 成人免费一区二区三区在线观看 | 亚洲乱人伦| 精品人妻av一区二区三区 | 亚洲精品9999 | 黄色片a级片 | 一区二区三区日韩精品 | 亚洲午夜一区二区 | 少妇高潮一区二区三区99欧美 | 午夜啪啪网 | 亚洲美女视频 | 国产性生活网站 | 一区二区三区高清 | 男人的天堂中文字幕 | 亚洲视频在线观看 | 理论片中文字幕 | 香蕉视频在线免费播放 | 国产区精品视频 | 久久色av | 91超级碰| 激情六月色 | 国产一级一片免费播放 | 日本一级一片免费视频 | 内射一区二区三区 | 色小姐在线视频 | 中文字幕一区视频 | 羞羞涩涩视频 | 欧美69久成人做爰视频 | 韩日毛片 | 午夜婷婷色 | 日本在线免费观看视频 | 怡红院精品视频 | 亚洲欧美视频 | 瑟瑟视频在线免费观看 | 日韩操操 | 欧美性生交xxxxx久久久缅北 | av不卡免费观看 | 亚洲网站在线观看 | 日韩αv | 黄色国产一级片 | 欧美日韩人妻一区二区 | 日韩男人天堂 | 日韩a级片在线观看 | 一区在线播放 |