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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Pthread创建线程后必须使用join或detach释放线程资源

發布時間:2023/11/30 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pthread创建线程后必须使用join或detach释放线程资源 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這兩天在看Pthread 資料的時候,無意中看到這樣一句話(man pthread_detach):

Either pthread_join(3) or pthread_detach() should be called for each thread
that an application creates, so that system resources for the thread can be
released. (But note that the resources of all threads are freed when the
process terminates.)

也就是說:每個進程創建以后都應該調用pthread_join 或 pthread_detach 函數,只有這樣在線程結束的時候資源(線程的描述信息和stack)才能被釋放.

之后又查了pthread_join?但是沒有明確說明必須調用pthread_join 或 pthread_detach.

但是再查了 Pthread for win32?pthread_join

When a joinable thread terminates, its memory resources (thread descriptor and stack) are not deallocated until another thread performs pthread_join on it. Therefore,?pthread_join must be called? once? for?each joinable thread created to avoid?memory leaks.


才知道如果在新線程里面沒有調用pthread_join 或 pthread_detach會導致內存泄漏, 如果你創建的線程越多,你的內存利用率就會越高, 直到你再無法創建線程,最終只能結束進程。
解決方法有三個: 1. ? 線程里面調用?pthread_detach(pthread_self())?這個方法最簡單 2.?在創建線程的設置PTHREAD_CREATE_DETACHED屬性 3.?創建線程后用?pthread_join()?一直等待子線程結束。
下面是幾個簡單的例子 1.?調用??pthread_detach(pthread_self()) #include <stdio.h> #include <stdlib.h> #include <pthread.h> void *PrintHello(void) { pthread_detach(pthread_self()); int stack[1024 * 20] = {0,}; //sleep(1); long tid = 0; //printf(“Hello World! It’s me, thread #%ld!\n”, tid); //pthread_exit(NULL); } int main (int argc, char *argv[]) { pthread_t pid; int rc; long t; while (1) { printf(“In main: creating thread %ld\n”, t); rc = pthread_create(&pid, NULL, PrintHello, NULL); if (rc){ printf(“ERROR; return code from pthread_create() is %d\n”, rc); //exit(-1); } sleep(1); } printf(” \n— main End —- \n”); pthread_exit(NULL); } 2.?在創建線程的設置PTHREAD_CREATE_DETACHED屬性 #include <stdio.h> #include <stdlib.h> #include <pthread.h> void *PrintHello(void) { int stack[1024 * 20] = {0,}; //pthread_exit(NULL); //pthread_detach(pthread_self()); } int main (int argc, char *argv[]) { pthread_t pid; int rc; long t; while (1) { printf(“In main: creating thread %ld\n”, t); pthread_attr_t attr; pthread_t thread; pthread_attr_init (&attr); pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED); rc = pthread_create(&pid, &attr, PrintHello, NULL); pthread_attr_destroy (&attr); if (rc){ printf(“ERROR; return code from pthread_create() is %d\n”, rc); //exit(-1); } sleep(1); } printf(” \n— main End —- \n”); pthread_exit(NULL); } 3. 創建線程后用?pthread_join() 一直等待子線程結束。
#include <stdio.h> #include <stdlib.h> #include <pthread.h> void *PrintHello(void) { int stack[1024 * 20] = {0,}; //sleep(1); long tid = 0; //pthread_exit(NULL); //pthread_detach(pthread_self()); } int main (int argc, char *argv[]) { pthread_t pid; int rc; long t; while (1) { printf(“In main: creating thread %ld\n”, t); rc = pthread_create(&pid, NULL, PrintHello, NULL); if (rc){ printf(“ERROR; return code from pthread_create() is %d\n”, rc); //exit(-1); } pthread_join(pid, NULL); sleep(1); } printf(” \n— main End —- \n”); pthread_exit(NULL); }

總結

以上是生活随笔為你收集整理的Pthread创建线程后必须使用join或detach释放线程资源的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 中文字幕免费播放 | 成人高清在线观看 | 日韩精品一二三四区 | 亚洲精品一 | 午夜欧美在线 | 91视频88av| 久久免费视频3 | 久久精品无码一区二区三区 | 色屋视频 | 中文av一区二区 | 日本黄大片在线观看 | 激情黄色小说网站 | 精品视频在线观看 | 亚洲无码精品一区二区三区 | 日本不卡一区在线 | 双女主黄文 | a级片在线观看视频 | 一级全黄裸体免费视频 | 成人免费毛片东京热 | 日韩不卡视频在线 | 在线视频日韩欧美 | 欧美日韩精品在线观看 | 欧美日韩中文字幕在线视频 | 国产精品电影网站 | 亚洲一区国产一区 | 少妇一级淫免费播放 | 亚洲av成人无码一二三在线观看 | 粉嫩av蜜桃av蜜臀av | 亚洲AV无码精品一区二区三区 | 麻豆视频网 | 国产精品宾馆在线精品酒店 | 特级性生活片 | 免费成人小视频 | 91九色论坛| 精品香蕉99久久久久网站 | 锦绣未央在线观看 | 在线免费观看污片 | 日韩欧美视频在线 | 欧美精品videos另类日本 | 欧美体内she精高潮 日韩一区免费 | 国产日韩精品中文字无码 | 一区欧美 | 中文天堂在线播放 | 日日狠狠久久偷偷四色综合免费 | 人人草人人射 | av一区二区在线观看 | 国产另类综合 | 亲嘴扒胸摸屁股免费视频日本网站 | 欧洲av一区二区 | 欧美日韩国产高清视频 | 奴性女会所调教 | 伊人久操 | 美女脱光衣服让男人捅 | 亚洲毛片大全 | 国产va视频 | 91视频免费入口 | 2017日日夜夜 | www.操com| 曰本无码人妻丰满熟妇啪啪 | 你懂的在线播放 | 欧美久久久久久久久久久久久久 | 久久99热精品 | 国产免费黄色大片 | 欧美成人精品一区二区男人看 | 神马久久久久久 | 亚洲综合视频在线观看 | 理论片毛片 | 成人免费淫片aa视频免费 | 爱爱中文字幕 | 欧美在线一区二区三区 | 中文字幕三级视频 | 庆余年三| 18色av| 99热导航| 一级性生活免费视频 | 日韩在线观看不卡 | 香港三级日本三级韩国三级 | 亚洲男男网站 | 精品伦精品一区二区三区视频 | 国产在线一区二区 | 99在线播放 | 内射国产内射夫妻免费频道 | 午夜肉伦伦影院 | 大地资源影视在线播放观看高清视频 | 九月婷婷 | 中文字幕一区二区三区乱码在线 | 不卡av网 | 99精品久久久久久中文字幕 | 国产日韩av一区二区 | a∨鲁丝一区鲁丝二区鲁丝三区 | 欧美 日韩 精品 | 成人午夜影片 | 欧美成人午夜剧场 | 婷婷丁香激情 | 日本人妻丰满熟妇久久久久久 | 国产a级黄色 | 国产成人一区二区三区 | 国产综合在线视频 | 日韩激情网站 |