很早以前有做过关于线程删除线程的调查,原本在查找文档时看到该函数,
pthread_cancel,但是该函数有一些使人厌烦的地方,就是当你当你有调
的线程已经申请完内存,还没进行free时,你将该线程给删除了,但是你
malloc的内存还是存在,这样就造成了内存泄露了,但是如何解决该问题
呢?
1)第一次想到的解决方法:调用 pthread_kill函数,pthread_kill(tid,SIGKILL)
杀掉自己想杀掉的线程,但是调用该函数之后就将整个进程都杀掉了。
这是为什么呢?
because pthread_kill内存封装的是 kill 函数,同时线程共享进程的资源,
当你想要杀掉线程的时候,信号是有经过进程,所以进程首先接收到该信号
将整个进程kill掉了;
2)那么还有其他方法可以实现呢?而且要保证资源释放掉,后面想到线程
的自身接收函数 pthread_exit ,如何使要被杀掉的线程调用该函数呢,后面
的方法也是和 1)中差不多的,就是自定义一个句柄函数 handl,然后在句柄
中 调用 pthread_exit;
以下是简单的实现代码: