麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C > 正文

深入分析父子線程、進程終止順序不同產生的結果

2020-01-26 16:08:13
字體:
來源:轉載
供稿:網友

Linux下編程,線程、進程退出順序問題紛紛擾擾,如果父進程/線程先于子進程/線程終止,系統會做什么處理呢?反之,如果子進程/線程先于父進程/線程終止,系統又會做什么處理呢?下面是我個人平時在筆記上做的一些象征性的總結,如果有疑問之處,大可提出,我一直認為懷疑是人類進步的根本所在。

一、線程
Linux線程創建函數為pthread_create(),默認規則是誰創建子線程,誰就要負責子線程的資源回收,當父線程退出后,子線程也隨著退出。所以,一般情況下,父線程退出時都要確保子線程已經退出,所以會使用pthread_join()函數阻塞等待子線程的退出信號/標識。
pthread_detach(threadid)函數的功能是使線程ID為threadid的線程處于分離狀態(可以為非父子關系),一旦線程處于分離狀態,該線程終止時底層資源立即被回收;否則終止子線程的狀態會一直保存占用系統的資源直到主線程調用pthread_join(threadid,NULL)獲取線程的退出狀態。被創建的子線程也可以自己分離自己,子線程調用pthread_detach(pthread_self())就是分離自己,因為pthread_self()這個函數返回的就是自己本身的線程ID。
1)父線程先于子線程終止
父線程先于子線程,則子線程為異常退出 ,那肯定沒有使用阻塞非分離函數pthread_join,分2種情況:
a)子線程已與父線程分離,如調用線程分離函數pthread_detach,則資源被自動回收釋放。
b)子線程未與父線程分離,則資源無法釋放,造成了資源浪費和系統臃腫(這種情況,我看有些資料上說系統也能自動釋放子線程的資源,如關閉描述符,釋放內存空間等等,但個人做過一些測試,比如在子線程中分配很多空間等,進程退出后,top查看內存狀態時還存在)。
2)子線程先于父線程終止
也分2種情況:
a)正常情況:子線程調用了線程分離函數ptread_detach(),或父線程調用了等待線程結束函數pthread_join()。
 b)異常情況:如果上面二者都為調用,則為子線程分配的資源無法得到釋放。

二、進程
一個現有進程可以調用fork函數創建一個新進程。由fork創建的新進程被稱為子進程(child process)。fork函數被調用一次但返回兩次。兩次返回的唯一區別是子進程中返回0值而父進程中返回子進程ID。
1)父進程先于子進程終止
當父進程先退出時,系統會讓init進程接管子進程,該子線程成為了孤兒進程。
2)子進程先于父進程終止
分為2種情況:
a)正常情況:父進程調用了wait函數 (非父子進程則用waitpid函數),此時父進程會等待子進程結束。
 b)父進程又沒有調用wait函數 (非父子進程則未調用waitpid函數),此種情況子進程進入僵死狀態即僵尸進程,并且會一直保持下去直到系統重啟。子進程處于僵死狀態時,內核只保存進程的一些必要信息以備父進程所需。此時子進程始終占有著資源,同時也減少了系統可以創建的最大進程數。
僵死狀態:一個已經終止、但是其父進程尚未對其進行善后處理(獲取終止子進程的有關信息,釋放它仍占有的資源)的進程被稱為僵死進程(zombie)。ps命令將僵死進程的狀態打印為Z 。

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 欧美乱论 | 鸳鸯谱在线观看高清 | 在线 日本 制服 中文 欧美 | 1024亚洲天堂 | 亚洲国产精品久久久 | 黄色特级 | 羞羞的动漫在线观看 | 久久久线视频 | 牛牛a级毛片在线播放 | 成年性羞羞视频免费观看无限 | 黄色免费在线视频网站 | 久久久久国产一区二区三区不卡 | 日韩精品免费看 | 免费在线观看成人网 | 成人福利电影在线观看 | av黄色在线免费观看 | 久久精品一区视频 | 国产视频精品在线 | 97porn| 成人在线免费观看视频 | 免费淫视频 | 香蕉视频h | 久久精品视频日本 | 欧美18—19sex性hd按摩 | 高清国产在线 | 爱性久久久久久久 | 中国av中文字幕 | 久久久www成人免费精品 | 日本网站在线看 | 日韩视频在线一区二区三区 | 国产精品片一区二区三区 | 91成人午夜性a一级毛片 | 91精品观看91久久久久久国产 | 日韩黄色av| 国产亚洲精品一区二区三区 | 日韩视频1 | 日韩中文字幕一区二区三区 | 精品一区二区三区日本 | 成人性视频在线 | 亚洲国产二区 | 久久精品视频网址 |