关于线程的删除:pthread_cancel函数的替代

本文探讨了在使用pthread_cancel可能导致内存泄露的问题,并提出了两种解决方案:一是使用pthread_kill但可能会导致进程被杀死;二是通过pthread_exit配合自定义句柄函数来确保资源释放。代码示例展示了如何使用pthread_exit实现线程安全退出。
摘要由CSDN通过智能技术生成

很早以前有做过关于线程删除线程的调查,原本在查找文档时看到该函数,

pthread_cancel,但是该函数有一些使人厌烦的地方,就是当你当你有调

的线程已经申请完内存,还没进行free时,你将该线程给删除了,但是你

malloc的内存还是存在,这样就造成了内存泄露了,但是如何解决该问题

呢?

1)第一次想到的解决方法:调用 pthread_kill函数,pthread_kill(tid,SIGKILL)

 杀掉自己想杀掉的线程,但是调用该函数之后就将整个进程都杀掉了。

这是为什么呢?

        because pthread_kill内存封装的是 kill 函数,同时线程共享进程的资源,

当你想要杀掉线程的时候,信号是有经过进程,所以进程首先接收到该信号

将整个进程kill掉了;

 

2)那么还有其他方法可以实现呢?而且要保证资源释放掉,后面想到线程

的自身接收函数 pthread_exit ,如何使要被杀掉的线程调用该函数呢,后面

的方法也是和  1)中差不多的,就是自定义一个句柄函数 handl,然后在句柄

中 调用 pthread_exit;

以下是简单的实现代码

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值