Pthred_detach 线程分离|学习笔记

简介: 快速学习 Pthred_detach 线程分离

开发者学堂课程【物联网开发- Linux 高级程序设计全套视频Pthred_detach 线程分离】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/660/detail/11061


Pthred_detach 线程分离

 

内容介绍:

一、定义

二、线程分离特点

三、结构

四、验证

 

一、定义

创建一个线程后应回收其资源,可以通过 pthread_join 等待线程结束,回收其资源。

或者等进程结束,系统会回收其资源,如果进程不结束,而且也没有join,那么线程资源不会被回收。但使用 pthread_join 函数会使调用者阻塞,故Linux提供了线程分离函数 pthread_detach。

 

二、线程分离特点

一旦使线程分离,线程依旧依赖于进程存在,只不过不需要使用join,在进程没有结束的时候,系统会自动回收其资源。

 

三、结构

1.#include

Int pthread_detach(pthread_t,thread)

若进行线程分离,那么他的参数就是线程号。

2.功能:

使调用线程与当前进程分离,使其成为一个独立的线程,该线程终止时,系统将自动回收它的资源。不需要join,进程也不需要结束的时候就可以回收已经结束的线程资源

3.参数:

thread:线程号

一旦将线程分离后,pthread_join 就不再阻塞。

4.返回值:

成功:返回 0,失败返回非 0。

 

四、验证

1. 在 main 函数中,创建了一个线程,线程号被保存在 tid1 中,thead 是线程函数,创建好线程后,将其分离。在设置 join 等待线程结束。

2. 线程1做的事情是:

for循环五次,每次循环一秒打印1条提示信息。

如果没有分离,join会等5秒,等待线程结束后会after join,再次等待三秒,程序才结束。以下为去掉分离后的结果。

image.png

3.如果添加线程分离,join不阻塞。以下为添加分离得出结果,直接结束join,等待三秒结束程序。

4. 以上说明:

即使线程分离了,但还是依赖于进程存在的。

5. 将等待时间改为10秒在结束程序,那线程就可以结束了。5秒之后结束,自动回收资源,过完10秒结束程序,5-10s的时候线程资源已经被自动回收。以下为输出结果。

image.png

相关文章
|
6月前
|
网络协议 Linux C++
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
Linux C/C++ 开发(学习笔记十一 ):TCP服务器(并发网络网络编程 一请求一线程)
125 0
|
23天前
|
编解码 数据安全/隐私保护 计算机视觉
Opencv学习笔记(十):同步和异步(多线程)操作打开海康摄像头
如何使用OpenCV进行同步和异步操作来打开海康摄像头,并提供了相关的代码示例。
59 1
Opencv学习笔记(十):同步和异步(多线程)操作打开海康摄像头
|
23天前
FFmpeg学习笔记(二):多线程rtsp推流和ffplay拉流操作,并储存为多路avi格式的视频
这篇博客主要介绍了如何使用FFmpeg进行多线程RTSP推流和ffplay拉流操作,以及如何将视频流保存为多路AVI格式的视频文件。
136 0
|
3月前
|
调度
多线程学习笔记
这篇文章是多线程学习笔记,涵盖了线程与进程的概念、多线程实现方式、线程状态、线程同步与不安全示例、死锁问题以及生产者与消费者问题等多线程编程的关键知识点。
多线程学习笔记
|
5月前
|
Linux API
Linux线程总结---线程的创建、退出、取消、回收、分离属性
Linux线程总结---线程的创建、退出、取消、回收、分离属性
|
6月前
|
NoSQL 网络协议 关系型数据库
redis-学习笔记(redis 单线程模型)
redis-学习笔记(redis 单线程模型)
54 3
|
6月前
|
安全 Java 编译器
多线程 (下) - 学习笔记2
多线程 (下) - 学习笔记
45 1
|
6月前
|
存储 算法 Java
多线程 (下) - 学习笔记1
多线程 (下) - 学习笔记
47 1
|
6月前
|
设计模式 安全 NoSQL
多线程 (上) - 学习笔记2
多线程 (上) - 学习笔记
45 1
|
6月前
|
Java 数据库连接 程序员
【后台开发】TinyWebser学习笔记(2)线程池、数据库连接池
【后台开发】TinyWebser学习笔记(2)线程池、数据库连接池
65 4

相关实验场景

更多