栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

linux学习—线程

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

linux学习—线程

线程回收

方法1:在创建线程的时候通过设置pthread_create函数的第二个参数将线程设置为detach状态
方法2:在主线程中调用pthread_join来等待子线程退出
方法3:在主线程或子线程中调用pthread_detach函数设置线程的detach状态
(注意:detach状态下的线程由系统负责释放资源,此状态下的线程pthread_join捕捉不到,但是一旦阻塞在pthread_join函数中,此时设置子线程detach状态不能立马让主线程pthread_join解除阻塞状态)

线程返回值

线程处理函数放回值是void但是可以通过强制转换(void *)来返回值,由pthread_join第二个参数捕捉,而pthread_join返回值表示线程的状态。

线程取消和线程清理

主线程或其他线程可以通过调用pthread_cancel取消某个线程的执行,子线程可以通过函数pthread_setcancelstate设置是否接受线程取消,也可以通过pthread_setcanceltype设置线程是立即取消还是延迟取消(延迟取消函数很多,一般不采用)。
设置线程清理函数后,线程取消、pthread_exit()、return(手册上说return不会调用线程清理函数,但是实验时还是调用了,欢迎大佬指正)时都会根据pthread_cleanup_push压栈的逆序调用线程清理函数

线程与信号

信号的接收单位是进程,信号到来引起软中断并不会中断子线程的执行(pthread_join这个函数如果在进行等待子线程结束的话也不会被中断),在一个进程中一个信号只能有一个处理函数,无论signal函数在主线程还是子线程中捕捉信号都是一样的效果(但是要注意用pthread_kill给子线程发送信号时候signal函数是否已经执行过了,否者就进行默认处理)。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/291970.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号