嵌入式学习——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. 注意

相关推荐
并不会39 分钟前
常见 CSS 选择器用法
前端·css·学习·html·前端开发·css选择器
龙鸣丿43 分钟前
Linux基础学习笔记
linux·笔记·学习
一点媛艺2 小时前
Kotlin函数由易到难
开发语言·python·kotlin
姑苏风2 小时前
《Kotlin实战》-附录
android·开发语言·kotlin
奋斗的小花生3 小时前
c++ 多态性
开发语言·c++
魔道不误砍柴功3 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
Nu11PointerException3 小时前
JAVA笔记 | ResponseBodyEmitter等异步流式接口快速学习
笔记·学习
闲晨3 小时前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
老猿讲编程3 小时前
一个例子来说明Ada语言的实时性支持
开发语言·ada
Chrikk4 小时前
Go-性能调优实战案例
开发语言·后端·golang