pthread_join直接决定资源是否能够及时释放
/*http://hankjin.blog.163.com/blog/static/33731937201072675024100/ pthread的内存泄露 # cc thread.c -lpthread # ./a.out 1 threads created 101 threads created 201 threads created 301 threads created ERROR, rc is 11, so far 382 threads created Fail:: Resource temporarily unavailable 错误提示资源不足,其实是发生了内存泄露,在run函数中,使用pthread_exit退出的线程,并没有像预想的一样释放内存,而是进入僵死状态,只有进程退出的时候才能释放,要想让pthread_exit的线程及时退出,只要在pthread_create后加上pthread_join函数调用即可。只要有了pthread_join,即使没有调用pthread_exit,线程退出时也会释放内存。 也就是说pthread_exit只是线程的一个出口,和资源的释放无关,pthread_join直接决定资源是否能够及时释放。 */ #include<pthread.h> #include<stdio.h> void *run(void*p) {pthread_exit(0); //可以不要,会自动调用 }int main () {pthread_t thread;int rc;long count = 0;while(1) {if((rc=pthread_create(&thread, NULL, run,NULL))!=0) {printf("ERROR, rc is %d, %ld threads created\n", rc, count);perror("Fail:");return -1;}//pthread_join(thread,0);//阻塞主线程,等待id线程结束。if(count++%100==0)printf("%ld threads created\n", count);}return 0;//结束本进程内所有线程 }
pthread_join直接决定资源是否能够及时释放相关推荐
- Java Review - 线程池资源一直不被释放案例源码分析
文章目录 概述 问题复现 源码分析 小结 概述 在日常开发中为了便于线程的有效复用,经常会用到线程池,然而使用完线程池后如果不调用shutdown关闭线程池,则会导致线程池资源一直不被释放. 下面通过 ...
- VB将自定义资源中的文件释放出来
程序代码: Option Explicit '************************************************************************* '** ...
- 扫描程序卡住-资源的打开与释放(ch.ethz.ssh2.SFTPv3Client)
在用ch.ethz.ganymed:ganymed-ssh2:build210做一个远程文件扫描组件时,先用ssh协议连上远程主机,然后利用sftp协议操作文件(ch.ethz.ssh2.SFTPv3 ...
- 内存资源的申请与释放(CC++)
在嵌入式系统中动态内存申请存在比一般系统编程时更严格的要求,这是因为嵌入式系统的内存空间往往是十分有限的,不经意的内存泄露会很快导致系统的崩溃. 所以一定要保证你的malloc和free成对出现,如果 ...
- 【Linux开发】彻底释放Linux线程的资源
Linux系统中程序的线程资源是有限的,表现为对于一个程序其能同时运行的线程数是有限的.而默认的条件下,一个线程结束后,其对应的资源不会被释放,于是,如果在一个程序中,反复建立线程,而线程又默认的退出 ...
- linux中pthread_join()与pthread_detach()详解
前言: 1.linux线程执行和windows不同,pthread有两种状态joinable状态和unjoinable状态,如果线程是joinable状态,当线程函数自己返回退出时或pthread_e ...
- OS / Linux / pthread_join() 和 pthread_detach() 函数区别
一.线程的两种状态 对于 linux 线程来说,pthread 有两种状态:joinable 和 unjoinable. 若线程的状态是 joinable,当线程函数自己返回退出时或 pthread_ ...
- Linux线程退出、资源回收、资源清理的方法
首先说明线程中要回收哪些资源,理解清楚了这点之后在思考资源回收的问题. 1.子线程创建时从父线程copy出来的栈内存; 线程退出有多种方式,如return,pthread_exit,pthread_c ...
- pthread_detach():主线程与子线程分离,子线程结束后,资源自动回收
https://github.com/Rtoax/test/tree/master/c/glibc/pthread 目录 前言 pthread_join() pthread_detach() 前言 1 ...
最新文章
- 数据的存入取出(注册机方式)
- 自由自在休闲食品以创新助80后女孩成功创业
- matlab2014a 3d标定,[转载]张的matlab摄像机标定
- 初学者学习C++的50条忠告
- 在iOS端使用AVSampleBufferDisplayLayer进行视频渲染
- 绿幕抠图-为你的想象插上翅膀
- 怎样复制百度文库中的内容?
- java中的if语句_java中的条件判断语句
- 仿京东详情页商品图片查看
- 软件开发七宗罪(转发)
- Linux DMA 框架介绍,demengine.c文件
- 计计算机类学科代码是多少,高校专业代码表
- 高德地图使用心得,百度地图使用心得
- Axure RP8 下载、安装、破解、汉化一条龙服务
- 由OJ提交结果联想到内存页面大小的一些小猜想
- OFDM学习笔记(一)(OFDM技术简介)
- c语言编程文件打不开,c语言fopen打开文件失败的原因是什么?
- 10款常用的原型设计工具,包含一键生成原型工具
- ~2 ccf 2022-03-1 未初始化警告
- 小数点怎么进行进制转换?
热门文章
- i2c通信 msp430g2553_请教 AD7150 + MSP430G2553 i2C通讯问题该如何编码??
- java 获取java文件路径_Java怎么获取相对路径下所有的.java文件的信息
- 时序分析中的关键术语
- FPGA的设计艺术(5)STA实战之时钟偏斜对建立保持时间的影响以及时序报告分析
- FPGA之道(80)静态时序分析(六)常用时序约束介绍(基于ISE的UCF文件语法)
- 编程语言介绍、python解释器执行代码的过程
- android SwipeRefreshLayout嵌套Webview滑动冲突问题解决
- 基于比特币现金的Token逐梦而来
- 这交互炸了 - 收藏集 - 掘金
- Gym 100646 Problem C: LCR 模拟题