嵌入式学习——Linux高级编程复习(线程)——day40

  1. 线程

1.1 定义

线程是一个轻量级的进程

是一个任务被创建、调度、消亡的过程

1.2 线程和进程的区别与联系

  1. 线程是CPU任务调度的最小单元

  2. 进程是操作系统资源分配的最小单元

  3. 线程(Thread)是操作系统能够进行运算调度的最小单位,它是程序执行流的最小单元,也是进程内的实际运作单位。线程被包含在进程之中,一个进程可以包含一个或多个线程,每个线程代表进程中的一个执行路径,能够并发或并行执行不同的任务。

1.3 线程的创建

  1. 进程的创建:文本段、数据段、系统数据段、内核

  2. 线程的创建:栈区独立,其余区域与进程共享

  3. 进程中的所有线程

独享:栈区------局部变量、

共享:文本段、数据段、堆区------全局变量/静态变量/字符串常量/malloc空间/代码

1.4 线程的调度

宏观并行、微观串行

1.5 多线程和多进程的优缺点

  1. 执行效率

多线程 > 多进程

1.多线程只需在同一进程空间内部切换调度任务

2.多进程需要在不同进程空间来回切换调度任务

  1. 安全性

多进程 > 多线程

1.多进程各自独立,一个进程异常结束,不会影响其余进程

2.多线程都在同一进程空间内部,一个线程异常结束,导致进程异常结束,

进程中其余所有线程均会结束

  1. 通信能力

多线程 > 多进程

1.多线程可以利用共享空间实现任务通信

2.多进程没有共享空间,所以通信方式比较复杂

  1. 通信安全性

多进程 > 多线程

1.多进程没有共享空间,依赖第三方对象完成通信,中间不涉及资源竞争问题

2.多线程有共享空间,多个任务通信会产生资源竞争,需要加锁

  1. 线程相关函数接口

对标进程函数接口

1.fork pthread_create

2.exit pthread_exit

3.wait pthread_join

4.getpid pthread_self

2.1 pthread_create

  1. 定义

  2. 功能

  3. 参数

  4. 返回值

  5. 示例程序

  6. 注意

2.2 pthread_self

  1. 定义

  2. 功能

  3. 参数

  4. 返回值

  5. 示例程序

  6. 注意

2.3 pthread_exit

  1. 定义

  2. 功能

  3. 参数

  4. 返回值

  5. 示例程序

  6. 注意

2.4pthread_cancel

  1. 定义

  2. 功能

  3. 参数

  4. 返回值

  5. 示例程序

  6. 注意

2.5 pthread_join

  1. 定义

  2. 功能

  3. 参数

  4. 返回值

  5. 示例程序

  6. 注意

2.6 pthread_attr_init

  1. 定义

  2. 功能

初始化线程属性为默认属性

  1. 参数

  2. 返回值

  3. 示例程序

  4. 注意

2.7 pthread_attr_setdetachstate

  1. 定义

  2. 功能

设置线程的属性

  1. 参数

  2. 返回值

  3. 示例程序

  4. 注意

2.8 pthread_attr_destroy

  1. 定义

  2. 功能

销毁线程属性

  1. 参数

  2. 返回值

  3. 示例程序

  4. 注意

  5. 互斥锁

3.1 引用互斥锁的原因:利用全局变量能够实现两个线程任务通信,线程任务通信操作全局变量可能会引发资源竞争,为避免资源竞争,引入互斥锁机制

3.2 定义

互斥锁可以理解为是一种资源,一旦互斥锁被加锁,另外的线程任务无法继续加锁,必须等待互斥锁被解锁,另外的任务才能加锁

3.3 临界资源(临界区)

加锁和解锁中间的代码(资源)称为临界资源(临界区),同一时刻,临界资源不能被同时执行

  1. 互斥锁相关函数接口

4.1 pthread_mutex_init

  1. 定义

  2. 功能

初始化一个互斥锁

  1. 参数

  2. 返回值

  3. 示例程序

  4. 注意

4.2 pthread_mutex_lock

  1. 定义

  2. 功能

上锁

  1. 参数

  2. 返回值

  3. 示例程序

  4. 注意

4.3 pthread_mutex_unlockk

  1. 定义

  2. 功能

解锁

  1. 参数

  2. 返回值

  3. 示例程序

  4. 注意

4.4 pthread_mutex_destroy

  1. 定义

  2. 功能

销毁锁资源

  1. 参数

  2. 返回值

  3. 示例程序

  4. 注意

相关推荐
量子-Alex30 分钟前
【多模态聚类】用于无标记视频自监督学习的多模态聚类网络
学习·音视频·聚类
轻口味32 分钟前
命名空间与模块化概述
开发语言·前端·javascript
吉大一菜鸡35 分钟前
FPGA学习(基于小梅哥Xilinx FPGA)学习笔记
笔记·学习·fpga开发
晓纪同学1 小时前
QT-简单视觉框架代码
开发语言·qt
威桑1 小时前
Qt SizePolicy详解:minimum 与 minimumExpanding 的区别
开发语言·qt·扩张策略
飞飞-躺着更舒服2 小时前
【QT】实现电子飞行显示器(简易版)
开发语言·qt
明月看潮生2 小时前
青少年编程与数学 02-004 Go语言Web编程 16课题、并发编程
开发语言·青少年编程·并发编程·编程与数学·goweb
明月看潮生2 小时前
青少年编程与数学 02-004 Go语言Web编程 17课题、静态文件
开发语言·青少年编程·编程与数学·goweb
Java Fans2 小时前
C# 中串口读取问题及解决方案
开发语言·c#
盛派网络小助手2 小时前
微信 SDK 更新 Sample,NCF 文档和模板更新,更多更新日志,欢迎解锁
开发语言·人工智能·后端·架构·c#