开发者学堂课程【物联网开发- Linux 高级程序设计全套视频:线程被取消的时候执行清理函数】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/660/detail/11068
线程被取消的时候执行清理函数
内容介绍
一.运行过程
二.取消过程
一.运行过程
验证线程被取消的时候,系统自动调用线程清理函数,分析以下程序
二.取消过程
被别的线程取消的时候,相当于它杀,那这个程序当中就创建了一个线程,一秒钟之后,pthread-join(tid,NULL)就将线程取消,将主线程取消,等它取消了之后,回收资源,程序结束.
线程进来之后就是打印提示信息,申请内存,注册清理函数
然后接下来,将内容拷进里面,睡到一秒就被主线程取消,取消之后执行不到三秒就被取消,一秒钟被取消后,
Printf(‘’before pop\n);
pthread-cleanup-pop(1)
这个函数就执行不了.
一秒钟之后Printf(‘’clean up prt = %s\n’’,(char *)arg );
Free((char *)arg);
就被执行,相当于线程被别的线程取消,就是执行的清理函数。