2024年8月15日嵌入式学习

今日主要学习线程和线程的互斥锁

pthread_cancel函数

它用于取消一个线程,当一个线程收到取消的申请时,他不会立即停止,而是在下一个取消点处结束运行,取消点是程序中一个特定的位置。如果线程在执行一个不可中断的系统调用,他将执行一到调用完成。

pthread_detach函数

可分离属可分离属性 ---子线程运行很久才结束 --- 设置分离属性

功能:

分离线程

参数:

thread 要分离的线程的tid

返回值:

成功 0

失败 错误码

总结

1.创建 -- pthread_create

2.执行 -- 线程执行函数

3.退出 -- pthread_exit

return //线程执行函数中

pthread_cancel

exit() //return 从main

4.资源回收

可结合性 --- pthread_join //这种用于 ,线程任务较短,主线程需要关心子线程状态

可分离性 --- pthread_detach //子程序执行任务较长,主线程也不需要关心子线程状态

对比 线程 和 进程

1.线程 vs 进程

线程 CPU执行的最小单位

进程 资源分配和任务调度基本单位

  1. 各自特点 (优缺点)

//1.创建 和 调度

线程

创建速度快

调度速度快

//并发程度 更高

//2. 安全性

线程

好处:共享了进程的数据空间

共享数据方面 方便

缺点:

安全性不好 //

带来资源竞争 //专门的技术 解决资源竞争 --- 互斥 同步

进程

进程空间相互独立

好处,

安全性好

缺点:

进程间共享数据不方便 //进程间通信 (管道,信号,共享内存)

互斥锁

定义互斥锁:

pthread_mutex_t mutex;

互斥锁类型 互斥锁变量 内核对象

初始化锁

pthread_mutex_init(); //初始化一把锁

参数:

@mutex //就是要初始化的 互斥锁变量

@attr //属性

//NULL 默认属性 --- 普通锁

//读写锁

加锁 //加锁 加在 要访问临界资源的地方

pthread_mutex_lock(); //上锁

解锁

pthread_mutex_unlock(); //解锁 临界资源访问之后就解开

销毁

pthread_mutex_destroy();//销毁一把锁

参数:

@mutex //要操作的那把锁

线程间的顺序问题:

//同步操作

强调的是线程的 顺序问题

信号量 //交通信号灯

//实现一种可以让线程间有序访问临界资源的方式

信号量 --- 可以顺序操作的一把锁

相关推荐
DSP 电源笔记君1 小时前
电子电力技术的准谐振电路和LLC电路相关习题学习记录分享
学习·dsp开发·电源开发·电力电子技术
_dindong3 小时前
【递归、回溯、搜索】专题六:记忆化搜索
数据结构·c++·笔记·学习·算法·深度优先·哈希算法
BreezeJuvenile3 小时前
外设模块学习(13)——HW-493激光发射模块(STM32实现)
stm32·单片机·学习·hw-493激光发射模块
im_AMBER4 小时前
Leetcode 43
笔记·学习·算法·leetcode
im_AMBER4 小时前
React 09
前端·javascript·笔记·学习·react.js·前端框架
BreezeJuvenile5 小时前
外设模块学习(10)——红外避障模块(STM32)
stm32·单片机·学习·红外避障模块
codeyanwu5 小时前
SQL 学习笔记
笔记·sql·学习
71-35 小时前
C语言——函数声明、定义、调用
c语言·笔记·学习·其他
民乐团扒谱机6 小时前
实验室安全教育与管理平台学习记录(四)机械建筑类安全
学习·安全
井队Tell7 小时前
打造高清3D虚拟世界|零基础学习Unity HDRP高清渲染管线(第十二天)
学习·3d·unity