请问

Windows下的函数 WaitForMultipleObjects()----等待一组线程的函数

在Linux下如何实现呢?

--------------------------------------

最好贴点代码,谢谢诸位了

|

linux 中没有类似的接口, 但可以使用 pthread_detach 函数,让线程退出时,自己释放资源。

线程终止的同步及其返回值

一般情况下,进程中各个线程的运行都是相互独立的,线程的终止并不会通知,也不会影响其他线程,终止的线程所占用的资源也并不会随着线程的终止而得到释放。正如进程之间可以用wait()系统调用来同步终止并释放资源一样,线程之间也有类似机制,那就是pthread_join()函数。

void pthread_exit(void *retval)

int pthread_join(pthread_t th, void **thread_return)

int pthread_detach(pthread_t th)

pthread_join()的调用者将挂起并等待th线程终止,retval是pthread_exit()调用者线程(线程ID为th)的返回值,如果thread_return不为NULL,则*thread_return=retval。需要注意的是一个线程仅允许唯一的一个线程使用 pthread_join()等待它的终止,并且被等待的线程应该处于可join状态,即非DETACHED状态。

如果进程中的某个线程执行了pthread_detach(th),则th线程将处于DETACHED状态,这使得th线程在结束运行时自行释放所占用的内存资源,同时也无法由pthread_join()同步,pthread_detach()执行之后,对th请求pthread_join()将返回错误。

一个可join的线程所占用的内存仅当有线程对其执行了pthread_join()后才会释放,因此为了避免内存泄漏,所有线程的终止,要么已设为DETACHED,要么就需要使用pthread_join()来回收。

|

再过几天就学到线程了。。。

linux 等待子线程退出,等待一组子线程退出的问题__线程_pthread_join_终止_pthread_detach_释放__169IT.COM...相关推荐

  1. 阻塞主线程,等待异步子线程执行完毕再退出主线程,有几种写法?

    这里实际是考察线程间的通信,正常情况下,主线程里启动异步线程执行某个方法,理论上主线程和这个异步线程是并行执行,互不干扰,但是现在要求异步线程执行完毕方法之后,才能继续执行主线程,实际是如何阻塞主线程 ...

  2. OS / Linux / 主线程退出了,子线程会退出吗?

    在 linux 世界中,主线程退出了,子线程是否退出是要看主线程的退出方式. 主线程以 return 的方式退出. 主线程以 pthread_exit() 函数的方式退出. 前者,main() 执行完 ...

  3. 嵌入式Linux系统编程学习之二十八线程的等待退出

    文章目录 一.等待线程退出 二.线程的取消 三.线程终止清理函数 一.等待线程退出   线程从入口点函数自然返回,或者主动调用 pthread_exit 函数都可以让线程正常终止.线程从入口点函数自然 ...

  4. Linux 进程控制(创建/退出/等待/替换)

    目录 进程创建 fork()函数 fork返回值 fork写时拷贝 fork失败原因 fork用法 进程退出 退出场景 常见的退出方法 正常退出 异常退出 _exit()系统调用 exit()函数 _ ...

  5. java 子线程退出_java – 在子线程完成执行之前主线程将退出吗?

    我读了2篇文章 在上面的文章中,在"线程终止"段中,它在Red中声明"如果父线程终止,它的所有子线程也会终止". 在上面的文章中,该页面的最后一行指出" ...

  6. 《Linux进程概念,进程创建退出等待替换,环境变量等基础操作 ---总结》

    前言 Linux系统的进程概念,进程状态,以及操作创建进程,还有环境变量及相关指令,程序地址空间等一些知识的梳理,将自己的理解总结如下,希望和各位一起进步,一起学习. 以下是本篇文章正文内容. 文章目 ...

  7. 多线程(二)线程控制(创建 退出 等待)

    线程控制 注意:操作系统不会单独向上创建线程调用接口,只能通过封装库函数完成对线程操作 区分线程和轻量级进程:线程是基于上层(用户态)而言,对应底层(内核态)就是一个轻量级pcb(lwp) 创建: i ...

  8. 主线程退出,子线程会退出吗?子线程崩溃,主线程会退出吗?

    记得以前刚接触多线程编程时,作为一个新手遇到的一个问题就是:我创建的子线程为什么没有跑起来?如以下最简单的一个程序: #include <stdio.h> #include <std ...

  9. python 中主线程结束 子线程还在运行么_「干货」python线程笔记

    引言&动机 考虑一下这个场景,我们有10000条数据需要处理,处理每条数据需要花费1秒,但读取数据只需要0.1秒,每条数据互不干扰.该如何执行才能花费时间最短呢? 在多线程(MT)编程出现之前 ...

最新文章

  1. linux maps,linux下/proc/pid/maps和pmap命令详解
  2. 05_数据的特征处理,归一化,标准化、缺失值处理,以及案例,使用场景,处理办法等
  3. 你需要了解操作系统发展历程
  4. 牛客-沙漠点列【tarjan】
  5. 细说ReactiveCocoa的冷信号与热信号(三):怎么处理冷信号与热信号
  6. identifier is too long 异常处理
  7. 处理异常:org.springframework.beans.factory.BeanNotOfRequiredTypeException
  8. linux安装完windows字体以后 特别难看,告别 Windows 终端的难看难用,从改造 PowerShell 的外观开始...
  9. 致远OA办公网“office控件不可用”及“无注册表类”解决办法
  10. 如何修改显示Office图标而不是wps图标
  11. Java后端开发的浪漫~情人节表白/告白代码(小白快速搭建项目)
  12. mac mysql 移动硬盘_MAC上安装Fuse for macOS以支持读取NTFS格式的移动硬盘
  13. 远程电脑不能复制粘贴
  14. 浪潮服务器开机没有信号输出,PLC输出指示灯已经点亮但是输出没有信号-工业支持中心-西门子中国...
  15. UG NX2007调出Drill钻孔命令的方法
  16. WEEK 15 B ZJM 与生日礼物
  17. 在XShell中修改ip为静态ip
  18. ola.hallengren的SQL Server维护脚本
  19. 超级计算机榜单说明:TOP500、Green500、Graph500、IO500
  20. 简书python数据分析基础reading_Python数据分析基础ReadingDay5_sqlite3

热门文章

  1. Fescar锁和隔离级别的理解
  2. VMware SDS 之四:VSAN的技术细节
  3. JMeter 测试计划
  4. [转]调试AngularJS应用
  5. Server Core十大安装设置命令
  6. AI服务器的优势有哪些?人工智能服务器产品有哪些?
  7. dede调用sql语句的方法
  8. 5G服务可以解决的4个企业WAN挑战 - vecloud
  9. 安装nvm-nvm: command not found
  10. mybatis 批量查询参数语句