linux 等待子线程退出,等待一组子线程退出的问题__线程_pthread_join_终止_pthread_detach_释放__169IT.COM...
请问
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...相关推荐
- 阻塞主线程,等待异步子线程执行完毕再退出主线程,有几种写法?
这里实际是考察线程间的通信,正常情况下,主线程里启动异步线程执行某个方法,理论上主线程和这个异步线程是并行执行,互不干扰,但是现在要求异步线程执行完毕方法之后,才能继续执行主线程,实际是如何阻塞主线程 ...
- OS / Linux / 主线程退出了,子线程会退出吗?
在 linux 世界中,主线程退出了,子线程是否退出是要看主线程的退出方式. 主线程以 return 的方式退出. 主线程以 pthread_exit() 函数的方式退出. 前者,main() 执行完 ...
- 嵌入式Linux系统编程学习之二十八线程的等待退出
文章目录 一.等待线程退出 二.线程的取消 三.线程终止清理函数 一.等待线程退出 线程从入口点函数自然返回,或者主动调用 pthread_exit 函数都可以让线程正常终止.线程从入口点函数自然 ...
- Linux 进程控制(创建/退出/等待/替换)
目录 进程创建 fork()函数 fork返回值 fork写时拷贝 fork失败原因 fork用法 进程退出 退出场景 常见的退出方法 正常退出 异常退出 _exit()系统调用 exit()函数 _ ...
- java 子线程退出_java – 在子线程完成执行之前主线程将退出吗?
我读了2篇文章 在上面的文章中,在"线程终止"段中,它在Red中声明"如果父线程终止,它的所有子线程也会终止". 在上面的文章中,该页面的最后一行指出" ...
- 《Linux进程概念,进程创建退出等待替换,环境变量等基础操作 ---总结》
前言 Linux系统的进程概念,进程状态,以及操作创建进程,还有环境变量及相关指令,程序地址空间等一些知识的梳理,将自己的理解总结如下,希望和各位一起进步,一起学习. 以下是本篇文章正文内容. 文章目 ...
- 多线程(二)线程控制(创建 退出 等待)
线程控制 注意:操作系统不会单独向上创建线程调用接口,只能通过封装库函数完成对线程操作 区分线程和轻量级进程:线程是基于上层(用户态)而言,对应底层(内核态)就是一个轻量级pcb(lwp) 创建: i ...
- 主线程退出,子线程会退出吗?子线程崩溃,主线程会退出吗?
记得以前刚接触多线程编程时,作为一个新手遇到的一个问题就是:我创建的子线程为什么没有跑起来?如以下最简单的一个程序: #include <stdio.h> #include <std ...
- python 中主线程结束 子线程还在运行么_「干货」python线程笔记
引言&动机 考虑一下这个场景,我们有10000条数据需要处理,处理每条数据需要花费1秒,但读取数据只需要0.1秒,每条数据互不干扰.该如何执行才能花费时间最短呢? 在多线程(MT)编程出现之前 ...
最新文章
- linux maps,linux下/proc/pid/maps和pmap命令详解
- 05_数据的特征处理,归一化,标准化、缺失值处理,以及案例,使用场景,处理办法等
- 你需要了解操作系统发展历程
- 牛客-沙漠点列【tarjan】
- 细说ReactiveCocoa的冷信号与热信号(三):怎么处理冷信号与热信号
- identifier is too long 异常处理
- 处理异常:org.springframework.beans.factory.BeanNotOfRequiredTypeException
- linux安装完windows字体以后 特别难看,告别 Windows 终端的难看难用,从改造 PowerShell 的外观开始...
- 致远OA办公网“office控件不可用”及“无注册表类”解决办法
- 如何修改显示Office图标而不是wps图标
- Java后端开发的浪漫~情人节表白/告白代码(小白快速搭建项目)
- mac mysql 移动硬盘_MAC上安装Fuse for macOS以支持读取NTFS格式的移动硬盘
- 远程电脑不能复制粘贴
- 浪潮服务器开机没有信号输出,PLC输出指示灯已经点亮但是输出没有信号-工业支持中心-西门子中国...
- UG NX2007调出Drill钻孔命令的方法
- WEEK 15 B ZJM 与生日礼物
- 在XShell中修改ip为静态ip
- ola.hallengren的SQL Server维护脚本
- 超级计算机榜单说明:TOP500、Green500、Graph500、IO500
- 简书python数据分析基础reading_Python数据分析基础ReadingDay5_sqlite3