linux c 等待线程退出,linux 下c编程的多线程退出问题
linux 下c编程的多线程退出问题
(2012-04-10 00:56:06)
标签:
linux
多线程
c编程
杂谈
linux 下c编程的多线程退出问题多线程退出有三种方式:
(1)执行完成后隐式退出;
(2)由线程本身显示调用pthread_exit 函数退出;
pthread_exit (void * retval) ;
(3)被其他线程用pthread_cance函数终止:
pthread_cance (pthread_t thread) ;
第一种的执行完成后隐私退出不是很理解,那位大虾帮忙解释下?
创建一个多线程,供另一函数直接调用(thread();),代码如下:
static thread(void)//create a thread for allocate memory
{
int ret;
pthread_t id;
setenv("MALLOC_TRACE","1.log",1);
mtrace();
ret=pthread_create(&id,NULL,(void
*)malloc_char,NULL);//malloc_char为申请3K内存的函数。
if(rethttp://www.hylxjd.com!=0)
printf("thread create
failed!\n");
else
printf("create the thread of memory
success!\n");
printf("当前线程ID:
%lu\n",pthread_self());
// pthread_join(id,NULL);
}
问题:
1)如果只创建线程没有添加退出函数,比如pthread_join()或者pthread_exit();
在linux(嵌入式开发版上)执行(频繁调用该thread线程),内存剩余15M(总32M)该线程无法继续创建:thread
create failed。
2)如果加入pthread_join(id,NULL)语句,
则不存在该问题。
现在不知道是开发版本身linux的问题呢,还是创建一个线程一定要有退出?
本人是初学者,还望各位大虾指教,帮忙解答下你频繁创建线程却没有退出,当然不行;线程要不要退出和怎样退出取决于你的设计,不过,如果要退出的话鼓励使用开关变量退出或者pthread_exit,也就是你的第一种方式;而pthread_cance
只能向目标线程发出取消请求,至于目标线程会不会马上退出得看其具体设计detach 之你可以写个thread
pool,重复利用
当然如果不想pool,那么创建一个线程就要退出以便释放资源就是要用pthread_jion或者pthread_exit来退出了。而不能只是单纯的pthread_create是吧。
用pthread_exit有试过,好像只能创建一次线程,之
分享:
喜欢
0
赠金笔
加载中,请稍候......
评论加载中,请稍候...
发评论
登录名: 密码: 找回密码 注册记住登录状态
昵 称:
评论并转载此博文
发评论
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。
linux c 等待线程退出,linux 下c编程的多线程退出问题相关推荐
- linux进程和线程教程,Linux下查看进程和线程
在Linux中查看线程数的三种方法 1.top -H 手册中说:-H : Threads toggle 加上这个选项启动top,top一行显示一个线程.否则,它一行显示一个进程. 2.ps xH 手册 ...
- qt 等待线程结束_实战PyQt5: 128-使用多线程进行并行处理
多线程是实现并行处理的重要手段,在GUI编程中,经常需要将耗费任务分离,用单独的线程来处理,避免对主线程造成影响(最常见的影响就是会造成主界面无法响应的假死现象).在Qt中,最常用的多线程一般是通过继 ...
- java 等待线程结束 框架_深入理解Java多线程与并发框架——线程的状态
欢迎关注专栏<Java架构筑基>--专注于Java技术的研究与分享!Java架构筑基zhuanlan.zhihu.comJava架构筑基--专注于Java技术的研究与分享! 后续文章将首 ...
- linux的创建线程池,Linux下通用线程池的创建与使用(上) (3)
线程的状态可以分为四种,空闲.忙碌.挂起.终止(包括正常退出和非正常退出).由于目前Linux线程库不支持挂起操作,因此,我们的此处的挂起操作类似于暂停.如果线程创建后不想立即执行任务,那么我们可以将 ...
- linux 修改最大线程,修改linux系统用户最大线程数限制
遇到了坑就记下来,养成一个好习惯,利人利己.java tomcat启动后总是报错:java.lang.OutOfMemoryError: unable to create new native thr ...
- linux已使用线程,在Linux中使用线程
4. 线程本地存储 内线程之间可以共享内存地址空间,线程之间的数据交换可以非常快捷,这是线程最显著的优点.但是多个线程访问共享数据,需要昂贵的同步开销,也容易造成与同步相关的BUG,更麻烦的是有些数据 ...
- java获取linux下面所有线程,获取Linux中Java线程的线程ID
最后,我发现JNI方式是解决我的问题的最佳方式.作为参考,我张贴代码,并建立它(基于example在维基百科)说明: Java类负责接口的C代码(GetThreadID.java): public c ...
- linux c 子线程sleep,linux c之sleep的多种实现
#include #include #include //使用select实现精确到1微秒(0.000001秒)的sleep void sleep_us(unsigned int nusecs) { ...
- 同软件多个线程设置不同ip_5-13网络编程(附带多线程死锁,线程通信)
0513多线程 死锁 当线程任务中出现了多个同步(多个锁)时,如果同步中嵌套了其他的同步.这时容易引发一种现象:程序出现无限等待,这种现象我们称为死锁 线程通信 生产者消费者模式 模拟街道案例 wai ...
- Windows下网络编程及多线程模型
Socket编程 要想客户端和服务器能在网络中通信,那必须得使用 Socket 编程. 服务端首先调用 socket() 函数,创建网络协议为 IPv4,以及传输协议为 TCP 的 Socket ,接 ...
最新文章
- Compression Helper Class using SharpZipLib
- clickhouse修改时区
- 电阻(4)之上/下拉电阻
- 刷新页面,无论点击多少次让Element UI的Message消息提示弹出一个
- 微信小程序 本地mysql_微信小程序系列之使用缓存在本地模拟服务器数据库
- 高度为5的3阶b树含有的关键字个数_第15期:索引设计(索引组织方式 B+ 树)
- mysql 增加 date 列_mysql数据库修改添加Date格式列的方法
- java 获取内存地址_Java 的多态在 JVM 里原来是这样的
- java return true false_javascript中return,return true,return false三者的用法及区别
- 星光计划计算机,计算机网络技术专业星光计划选拔赛圆满举行
- java每隔多长时间执行一次_crontab中如何实现每隔多少天执行一次脚本
- 6.5 XGBoost实战
- backtrack常用的一些综合扫描工具实例用法
- mysql -prompt选项
- 【C语言】11-指针
- php flea,FleaPHP - 开发框架 - PHP开源网(PHP-OPEN.ORG)
- 计算机boot进入u盘启动,深度u盘装系统进入boot设置教程
- oracle erp 表结构
- 系列:关于TXT的文件格式
- Win10 安装 Rational Rose