【Linux】线程终止方式

news/2024/6/17 4:12:33 标签: 开发语言, linux, c++, 服务器

文章目录

  • 一:pthread_exit函数
  • 二:pthread_cancel函数
  • 拓展:分离线程(可理解为终止线程的第四种方式)

如果需要只终止某个线程,而不终止整个进程,可有三种办法:

  1. 从线程函数return。这种方法对主线程不适用,从main函数return相当于调用exit。
  2. 线程可以调用pthread_ exit终止自己。
  3. 一个线程可以调用pthread_ cancel终止同一进程中的另一个线程。

一:pthread_exit函数

功能:线程终止
原型
void pthread_exit(void *value_ptr);
参数
value_ptr:value_ptr不要指向一个局部变量。
返回值:无返回值,跟进程一样,线程结束的时候无法返回到它的调用者(自身)

需要注意,pthread_exit或者return返回的指针所指向的内存单元必须是全局的或者是用malloc分配的,不能在线程函数的栈上分配,因为当其它线程得到这个返回指针时线程函数已经退出了。

二:pthread_cancel函数

功能:取消一个执行中的线程
原型
int pthread_cancel(pthread_t thread);
参数
thread:线程ID
返回值:成功返回0;失败返回错误码

拓展:分离线程(可理解为终止线程的第四种方式)

  • 默认情况下,新创建的线程是joinable的,线程退出后,需要对其进行pthread_join操作,否则无法释放
    资源,从而造成系统泄漏。
  • 如果不关心线程的返回值,join是一种负担,这个时候,我们可以告诉系统,当线程退出时,自动释放线
    程资源。

int pthread_detach(pthread_t thread);

可以是线程组内其他线程对目标线程进行分离,也可以是线程自己分离:

pthread_detach(pthread_self());

⚠️注意:joinable和分离是冲突的,一个线程不能既是joinable又是分离的。


http://www.niftyadmin.cn/n/207060.html

相关文章

PCB推荐参数设置

1、PCB推荐参数设置 (1)取消不常用的DRC检查项。DRC检查项检测过多会导致PCB布局布线的时候经常出现报错和造成软件的卡顿,如图所示,对DRC检查项进行设置,将其他检查项关闭,只保留第一个电气规则检查项。 …

深度学习中的目标识别

博主简介 博主是一名大二学生,主攻人工智能研究。感谢让我们在CSDN相遇,博主致力于在这里分享关于人工智能,c,Python,爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主,博主会继续更新的&#xff0c…

【串口通讯安装】电子仪器与电脑连接,串口通讯方式安装教程

一、通讯线缆介绍及连接 通信接口是指中央处理器和标准通信子系统之间的接口。计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一…

KDMP真实案例之主机 I/O 请求没有正常结束导致系统重启

目录 查看kdump文件 导致系统崩溃的寄存器指向的内存地址 导致重启的汇编指令 导致重启的源码 block/blk-core.c文件简介 导致重启的blk_finish_request函数源码 函数源码解读 系统重启原因 处理意见 查看kdump文件 各字段意思说明 KERNEL:显示内核文件的路…

[ vulnhub靶机通关篇 ] 渗透测试综合靶场 DC-5 通关详解 (附靶机搭建教程)

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

【代码笔记】Pytorch学习 DataLoader模块详解

Pytorch DataLoader模块详解dataloader整体结构DataLoaderinit 初始化参数解释代码解析IterableDataset 判断构建Sampler,单样本构建BatchSampler,组建batch构建collate_fn 对获取的batch进行处理其他的一些逻辑判断_get_iterator代码解析multiprocessin…

无需服务器免费上线你的静态网页

无需服务器免费上线你的静态网页:https://s.qiniu.com/bmaYJf

ansible Semaphore

Semaphore简介: ansible Semaphore 是一个用于运行 Ansible 剧本的响应式 Web UI。是用纯go编写的,支持mysql、pg、boltdb数据库(嵌入式键/值数据库). 源代码: https: //github.com/ansible-semaphore/semaphore。问题跟踪:Issues…