日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

OS / Linux / pthread_join() 和 pthread_detach() 函数区别

發布時間:2024/10/14 87 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OS / Linux / pthread_join() 和 pthread_detach() 函数区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、線程的兩種狀態

對于 linux 線程來說,pthread 有兩種狀態:joinableunjoinable

若線程的狀態是 joinable,當線程函數自己返回退出時或 pthread_exit() 時都不會釋放線程所占用堆棧和線程描述符(總計8K多),只有當你調用了 pthread_join() 之后這些資源才會被釋放。

若線程的狀態是 unjoinable,這些資源在線程函數退出時或 pthread_exit() 時自動會被釋放。

二、unjoinable 設置方法

unjoinable 屬性可以在 pthread_create() 時指定,或在線程創建后在線程中 pthread_detach() 自己, 如:pthread_detach(pthread_self()),將狀態改為 unjoinable 狀態,確保資源的釋放。

其實簡單的說就是在線程函數頭加上 pthread_detach(pthread_self()) 的話,線程狀態改變,在函數尾部直接 pthread_exit()線程就會自動退出,省去了給線程擦屁股的麻煩。

三、pthread_join 和 pthread_detach 區別

  • pthread_join() ,即:以阻塞的方式等待指定的線程結束。當函數返回時,被等待線程的資源被收回;如果線程已經結束,那么該函數會立即返回。上述的前提是線程必須是 joinable 的。可以這么理解,pthread_join() 函數的作用就是在main() 函數退出之前等待子線程退出,從而可以達到回收子線程剩余內存的目的。
  • pthread_detach(),即:主線程與子線程分離,子線程結束后,資源自動回收。
  • ?

    (SAW:Game Over!)

    總結

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

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