

如上图所示,线程函数中没有取消点(一般是一些系统调用----man 7 pthreads查看,自定义函数是无效的),则使用pthread_cancle函数不生效。
解决方法:可以添加pthread_testcancle();
通过pthread_join回收的线程已经被phread_cancel了的话,返回值是-1;
pthread_join回收的线程已经被phread_detach了的话,会报错,错误号是22;
文章讲述了在某些线程函数中,自定义的取消点无效时,如何使用pthread_testcancel检查并处理pthread_cancel不生效的情况。同时提到,当线程被pthread_join回收且已由pthread_detach处理时,可能会导致特定错误和行为。


如上图所示,线程函数中没有取消点(一般是一些系统调用----man 7 pthreads查看,自定义函数是无效的),则使用pthread_cancle函数不生效。
解决方法:可以添加pthread_testcancle();
通过pthread_join回收的线程已经被phread_cancel了的话,返回值是-1;
pthread_join回收的线程已经被phread_detach了的话,会报错,错误号是22;
506

被折叠的 条评论
为什么被折叠?