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编程的多线程退出问题相关推荐

  1. linux进程和线程教程,Linux下查看进程和线程

    在Linux中查看线程数的三种方法 1.top -H 手册中说:-H : Threads toggle 加上这个选项启动top,top一行显示一个线程.否则,它一行显示一个进程. 2.ps xH 手册 ...

  2. qt 等待线程结束_实战PyQt5: 128-使用多线程进行并行处理

    多线程是实现并行处理的重要手段,在GUI编程中,经常需要将耗费任务分离,用单独的线程来处理,避免对主线程造成影响(最常见的影响就是会造成主界面无法响应的假死现象).在Qt中,最常用的多线程一般是通过继 ...

  3. java 等待线程结束 框架_深入理解Java多线程与并发框架——线程的状态

    欢迎关注专栏<Java架构筑基>--专注于Java技术的研究与分享!Java架构筑基​zhuanlan.zhihu.comJava架构筑基--专注于Java技术的研究与分享! 后续文章将首 ...

  4. linux的创建线程池,Linux下通用线程池的创建与使用(上) (3)

    线程的状态可以分为四种,空闲.忙碌.挂起.终止(包括正常退出和非正常退出).由于目前Linux线程库不支持挂起操作,因此,我们的此处的挂起操作类似于暂停.如果线程创建后不想立即执行任务,那么我们可以将 ...

  5. linux 修改最大线程,修改linux系统用户最大线程数限制

    遇到了坑就记下来,养成一个好习惯,利人利己.java tomcat启动后总是报错:java.lang.OutOfMemoryError: unable to create new native thr ...

  6. linux已使用线程,在Linux中使用线程

    4. 线程本地存储 内线程之间可以共享内存地址空间,线程之间的数据交换可以非常快捷,这是线程最显著的优点.但是多个线程访问共享数据,需要昂贵的同步开销,也容易造成与同步相关的BUG,更麻烦的是有些数据 ...

  7. java获取linux下面所有线程,获取Linux中Java线程的线程ID

    最后,我发现JNI方式是解决我的问题的最佳方式.作为参考,我张贴代码,并建立它(基于example在维基百科)说明: Java类负责接口的C代码(GetThreadID.java): public c ...

  8. linux c 子线程sleep,linux c之sleep的多种实现

    #include #include #include //使用select实现精确到1微秒(0.000001秒)的sleep void sleep_us(unsigned int nusecs) { ...

  9. 同软件多个线程设置不同ip_5-13网络编程(附带多线程死锁,线程通信)

    0513多线程 死锁 当线程任务中出现了多个同步(多个锁)时,如果同步中嵌套了其他的同步.这时容易引发一种现象:程序出现无限等待,这种现象我们称为死锁 线程通信 生产者消费者模式 模拟街道案例 wai ...

  10. Windows下网络编程及多线程模型

    Socket编程 要想客户端和服务器能在网络中通信,那必须得使用 Socket 编程. 服务端首先调用 socket() 函数,创建网络协议为 IPv4,以及传输协议为 TCP 的 Socket ,接 ...

最新文章

  1. Compression Helper Class using SharpZipLib
  2. clickhouse修改时区
  3. 电阻(4)之上/下拉电阻
  4. 刷新页面,无论点击多少次让Element UI的Message消息提示弹出一个
  5. 微信小程序 本地mysql_微信小程序系列之使用缓存在本地模拟服务器数据库
  6. 高度为5的3阶b树含有的关键字个数_第15期:索引设计(索引组织方式 B+ 树)
  7. mysql 增加 date 列_mysql数据库修改添加Date格式列的方法
  8. java 获取内存地址_Java 的多态在 JVM 里原来是这样的
  9. java return true false_javascript中return,return true,return false三者的用法及区别
  10. 星光计划计算机,计算机网络技术专业星光计划选拔赛圆满举行
  11. java每隔多长时间执行一次_crontab中如何实现每隔多少天执行一次脚本
  12. 6.5 XGBoost实战
  13. backtrack常用的一些综合扫描工具实例用法
  14. mysql -prompt选项
  15. 【C语言】11-指针
  16. php flea,FleaPHP - 开发框架 - PHP开源网(PHP-OPEN.ORG)
  17. 计算机boot进入u盘启动,深度u盘装系统进入boot设置教程
  18. oracle erp 表结构
  19. 系列:关于TXT的文件格式
  20. Win10 安装 Rational Rose

热门文章

  1. 演示获取表单提交的信息
  2. pdf转换成word怎么转?三种方法详细解说
  3. 2019ICS大作业
  4. 【虹软24届校招提前批】Qamp;A--【简历优秀可免笔试】
  5. 学校计算机自培方案,2021年-2021年度下学期教师自培工作总结
  6. 使用curl连接代理服务器访问网站
  7. JAVA——基于TCP协议的文本聊天程序
  8. linux运行内存2g,Linux 下安装sql server 时 2G内存限制的最新(2019-08-15) 解决方案...
  9. 2006年度中国纳税百强出炉
  10. 艾司博讯:在拼多多卖书需要营业执照么