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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux 多线程开发-线程的属性-分离detached和连接joinable

發布時間:2023/12/10 linux 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux 多线程开发-线程的属性-分离detached和连接joinable 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、描述

linux的POSIX線程分離狀態決定一個線程以什么方式來終止。默認的分離狀態是可連接態(joinable),創建線程是參數設置為NULL,就是默認連接態,可以被pthread_join。

Linux的POSIX線程要么分離要么連接分別用一下宏表示:

  • 分離狀態:PTHREAD_CREAT_DETACHED
  • 連接態:PTHREAD_CREAT_JOINABLE
  • 一個可連接的線程的特點:

  • 可以被其他線程回收資源和殺死或取消
  • 不會主動釋放線程占用的線程資源,堆棧和描述符等,即使線程自己返回或結束或調用pthread_exit都不會釋放
  • 必須調用pthread_join且返回后釋放資源,避免僵尸線程。
  • 如果不用pthread_join,父線程先于子線程退出,則子線程會被init線程接管,由init進程調用wait系列函數進行回收資源。
  • 注意:為避免內存泄露,可連接的線程終止時要么設為可分離要么使用pthread_join釋放資源。一個線程不能被多個線程等待,

    一個可分離的線程的特點:

  • 自己退出或者調用pthread_exit,可以由系統自動回收資源
  • 2、設置可分離線程

    • 調用函數pthread_detach,將線程設轉換為可分離線程
    • 在創建時設置為可分離線程,初始化線程屬性結構體變量(pthread_attr_init),設置為可分離狀態(pthread_attr_setdetachstate),結構體變量地址傳入pthread_creat,銷毀初始化屬性(pthread_attr_destroy)

    pthread_detach函數原型:

    int pthread_detach(pthread_t pid);

    pid:要分離的線程ID。

    pthread_attr_setdetachstate函數原型:

    int pthread_attr_setdetachstate(pthread_attr_t *attr,int detachstate)

    detachstate:PTHREAD_CREAT_DETACHED??或者?PTHREAD_CREAT_JOINABLE

    創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

    總結

    以上是生活随笔為你收集整理的Linux 多线程开发-线程的属性-分离detached和连接joinable的全部內容,希望文章能夠幫你解決所遇到的問題。

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