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 //要操作的那把锁

线程间的顺序问题:

//同步操作

强调的是线程的 顺序问题

信号量 //交通信号灯

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

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

相关推荐
xiaobai17813 小时前
测试工程师入门AI技术 - 前序:跨越焦虑,从优势出发开启学习之旅
人工智能·学习
北岛寒沫13 小时前
北京大学国家发展研究院 经济学原理课程笔记(第二十一课 金融学基础)
经验分享·笔记·学习
扑火的小飞蛾14 小时前
网络安全小白学习路线图 (基于提供文档库)
学习·安全·web安全
优雅的潮叭14 小时前
c++ 学习笔记之 malloc
c++·笔记·学习
薛不痒15 小时前
深度学习之优化模型(数据预处理,数据增强,调整学习率)
深度学习·学习
昵称已被吞噬~‘(*@﹏@*)’~16 小时前
【RL+空战】学习记录03:基于JSBSim构造简易空空导弹模型,并结合python接口调用测试
开发语言·人工智能·python·学习·深度强化学习·jsbsim·空战
我想我不够好。16 小时前
学到的知识点 1.8
学习
旖旎夜光17 小时前
Linux(9)
linux·学习
浩瀚地学17 小时前
【Java】常用API(二)
java·开发语言·经验分享·笔记·学习
chao_66666618 小时前
解决 PowerShell 中文乱码问题
网络·学习·powershell