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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

线程的分离

發布時間:2025/3/15 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 线程的分离 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • 基礎知識

  • ? 默認情況下,線程被創建成可結合的。為了避免存儲器泄漏,每個可結合線程都應該被顯示回收,即調用pthread_join,或通過調用pthread_detach函數被分離。

    ? 1)如果一個可結合線程運行結束但沒有被join,則它的狀態類似與僵尸進程。

    ? 2)若調用pthread_join后,該線程還沒有結束運行,調用者會被阻塞。為了避免此現象,可在子線程中加入代碼

    ? ?pthread_detach(pthread_self())

    或者父線程調用

    ? ?pthread_detach(thread_id)(非阻塞,可立即返回)

    這將該子線程的狀態設置為分離的(detached),如此一來,該線程運行結束后會自動釋放所有資源。


    2.代碼實現

    ??//detach.c1?#include<stdio.h>2?#include<stdlib.h>3?#include<pthread.h>4?5?void*?thread_run(void*?val)6?{7?????pthread_detach(pthread_self());8?????printf("%s\n",(char*)val);9?????return?NULL;10?}11?int?main()12?{13?????pthread_t?tid;14?????int?tret=pthread_create(&tid,NULL,thread_run,"thread_run?run...");15?????if(tret!=0)?16?????{17?????????printf("create?pthread?error!,info?is:%s\n",strerror(tret));18?????????return?tret;19?????}?20?????int?ret;21?????sleep(1);?22?????if(0==pthread_join(tid,NULL))?23?????{24?????????printf("thread?wait?success!\n");25?????????ret=0;26?????}27?????else28?????{29?????????printf("pthread?wait?failed!\n");30?????????ret=1;31?????}32?????return?ret;33?}//makefile1?detach:detach.c2?????gcc?-o?$@?$^?-lpthread3?.PHONY:clean4?clean:5?????rm?-f?detach

    輸出結果:

    轉載于:https://blog.51cto.com/10707460/1765833

    總結

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

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