线程被取消的时候执行清理函数|学习笔记

简介: 快速学习线程被取消的时候执行清理函数

开发者学堂课程【物联网开发- 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);

就被执行,相当于线程被别的线程取消,就是执行的清理函数。image.gif

相关文章
|
2月前
|
编解码 数据安全/隐私保护 计算机视觉
Opencv学习笔记(十):同步和异步(多线程)操作打开海康摄像头
如何使用OpenCV进行同步和异步操作来打开海康摄像头,并提供了相关的代码示例。
114 1
Opencv学习笔记(十):同步和异步(多线程)操作打开海康摄像头
|
2月前
lua面向对象(类)和lua协同线程与协同函数、Lua文件I/O
Lua的面向对象编程、协同线程与协同函数的概念和使用,以及Lua文件I/O操作的基本方法。
37 4
lua面向对象(类)和lua协同线程与协同函数、Lua文件I/O
|
2月前
|
存储 前端开发 C++
C++ 多线程之带返回值的线程处理函数
这篇文章介绍了在C++中使用`async`函数、`packaged_task`和`promise`三种方法来创建带返回值的线程处理函数。
79 6
|
2月前
|
C++
C++ 多线程之线程管理函数
这篇文章介绍了C++中多线程编程的几个关键函数,包括获取线程ID的`get_id()`,延时函数`sleep_for()`,线程让步函数`yield()`,以及阻塞线程直到指定时间的`sleep_until()`。
38 0
C++ 多线程之线程管理函数
|
2月前
FFmpeg学习笔记(二):多线程rtsp推流和ffplay拉流操作,并储存为多路avi格式的视频
这篇博客主要介绍了如何使用FFmpeg进行多线程RTSP推流和ffplay拉流操作,以及如何将视频流保存为多路AVI格式的视频文件。
306 0
|
4月前
|
调度
多线程学习笔记
这篇文章是多线程学习笔记,涵盖了线程与进程的概念、多线程实现方式、线程状态、线程同步与不安全示例、死锁问题以及生产者与消费者问题等多线程编程的关键知识点。
多线程学习笔记
|
4月前
处理串口线程数据的函数
【8月更文挑战第4天】处理串口线程数据的函数。
32 4
|
4月前
|
Dart 编译器 API
Dart ffi 使用问题之在C++线程中无法直接调用Dart函数的问题如何解决
Dart ffi 使用问题之在C++线程中无法直接调用Dart函数的问题如何解决
|
7月前
|
安全 Java 编译器
多线程 (下) - 学习笔记2
多线程 (下) - 学习笔记
51 1
|
7月前
|
存储 算法 Java
多线程 (下) - 学习笔记1
多线程 (下) - 学习笔记
51 1