51CTO首页
内容精选
博客
学堂
精培
企业培训
CTO训练营
智能汽车
开源基础软件社区
WOT全球技术创新大会
公众号矩阵
移动端
免费课程
课程排行
直播课
软考学堂
精品班
厂商认证
IT技术
2023年软考
PMP项目管理
在线学习
企业服务
CTO训练营
技术经理研习营
LeaTech峰会
文章
资源
问答
开源课堂
专栏
直播
51CTO
开源基础软件社区
51CTO技术栈
51CTO官微
51CTO学堂
51CTO博客
CTO训练营
开源基础软件社区订阅号
51CTO学堂APP
51CTO学堂企业版APP
开源基础软件社区视频号
开源基础软件社区
首页
贴子
问答
资源
活动
直播
发现
社区矩阵
登录/注册
51CTO
中国优质的IT技术网站
51CTO博客
专业IT技术创作平台
51CTO学堂
IT职业在线教育平台
开源课堂
专栏
极客Show
鸿蒙技术特刊
汽车开发者社区
开发者训练营
鸿蒙14天IOT开发实战-笔记(3.3)
^浅忆佳瓦~苦思甜
发布于 2022-7-31 09:48
浏览
0收藏
3.3 内核开发之信号量
(1)信号量概念
信号量(Semaphore)是一种实现任务间通信的机制,实现任务之间同步或临界资源的互斥访问。常用于协助一组相互竞争的任务来访问临界资源。
在多任务系统中,各任务之间需要同步或互斥实现临界资源的保护,信号量功能可以为用户提供这方面的支持。
通常一个信号量的计数值用于对应有效的资源数,表示剩下的可被占用的互斥资源数。其值的含义分两种情况:
1):0,表示没有积累下来的Post信号量操作,且有可能有在此信号量上阻塞的任务。
2):正值,表示有一个或多个Post信号量操作。
以同步为目的的信号量和以互斥为目的的信号量在使用有如下不同:
1):
用作互斥时
,信号量创建后记数是满的,在需要使用临界资源时,先取信号量,使其变空,这样其他任务需要使用临界资源时就会因为无法取到信号量而阻塞,从而保证了临界资源的安全。
2):
用作同步时
,信号量在创建后被置为空,任务1取信号量而阻塞,任务2在某种条件发生后,释放信号量,于是任务1得以进入READY或RUNNING态,从而达到了两个任务间的同步。
(2)信号量运作机制
信号量初始化
,为配置的N个信号量申请内存(N值可以由用户自行配置,受内存限制),并把所有的信号量初始化成未使用,并加入到未使用链表中供系统使用。
信号量创建
,从未使用的信号量链表中获取一个信号量资源,并设定初值。
信号量申请
,若其计数器值大于0,则直接减1返回成功。否则任务阻塞,等待其它任务释放该信号量,等待的超时时间可设定。当任务被一个信号量阻塞时,将该任务挂到信号量等待任务队列的队尾。
信号量释放
,若没有任务等待该信号量,则直接将计数器加1返回。否则唤醒该信号量等待任务队列上的第一个任务。
信号量删除
,将正在使用的信号量置为未使用信号量,并挂回到未使用链表。
信号量允许多个任务在同一时刻访问同一资源
,但会限制同一时刻访问此资源的最大任务数目。访问同一资源的任务数达到该资源的最大数量时,会阻塞其他试图获取该资源的任务,直到有任务释放该信号量。
信号量运作示意图:
公共资源有四个任务数,信号量都分别被线程1、2、3、4获取后,此时此资源就会锁定而不让线程5进入,线程5及后面的线程都进入阻塞模式,当线程1工作完成而释放出信号量,线程5立即获得信号而得到执行。如此往复。
(3)cmsis_os2的API信号量接口简介
(4)信号量使用
分类
设备开发
标签
鸿蒙14天IOT开发
已于2022-8-23 14:30:40修改
赞
收藏
回复
分享
微博
QQ
微信
举报
举报
微信扫码分享
删除帖子
回复
添加资源
添加资源将有机会获得更多曝光,你也可以直接关联已上传资源
去关联
添加资源
相关推荐
鸿蒙
14
天
IOT
开发
实战
-
笔记
(1.1)
^浅忆佳瓦~苦思甜
• 3344浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(1.2)
^浅忆佳瓦~苦思甜
• 2178浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
1.3
^浅忆佳瓦~苦思甜
• 2131浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
1.4
^浅忆佳瓦~苦思甜
• 1546浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(1.5)
^浅忆佳瓦~苦思甜
• 1637浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(2.3)
^浅忆佳瓦~苦思甜
• 1364浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(3.1)
^浅忆佳瓦~苦思甜
• 2806浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(3.2)
^浅忆佳瓦~苦思甜
• 2015浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(3.4)
^浅忆佳瓦~苦思甜
• 2124浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(3.6)
^浅忆佳瓦~苦思甜
• 1781浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(4.1)
^浅忆佳瓦~苦思甜
• 2295浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(4.2)
^浅忆佳瓦~苦思甜
• 1611浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(4.3)
^浅忆佳瓦~苦思甜
• 2036浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(4.4)
^浅忆佳瓦~苦思甜
• 2055浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(5.1)
^浅忆佳瓦~苦思甜
• 2357浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(5.2)
^浅忆佳瓦~苦思甜
• 1565浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(6.4)
^浅忆佳瓦~苦思甜
• 1081浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(6.5)
^浅忆佳瓦~苦思甜
• 1639浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(7)
^浅忆佳瓦~苦思甜
• 2592浏览
• 0回复
^浅忆佳瓦~苦思甜
这个用户很懒,还没有个人简介
帖子
视频
声望
粉丝
私信
关注
最近发布
鸿蒙14天IOT开发实战-笔记(7)
2022-08-01 11:49:57发布
鸿蒙14天IOT开发实战-笔记(6.5)
2022-08-01 11:13:13发布
热门推荐
OpenHarmony智能开发套件[环境搭建篇]
9回复
基于ArkUI框架开发——图片模糊处理的实现
7回复
OpenHarmony开源鸿蒙无人机来了
9回复
OpenBrother开源大师兄上手体验&时间信息、温度曲线样例开发
8回复
OpenHarmony智能开发套件[驱动开发篇·上]
6回复
相关问题
鸿蒙应用开发实战创作目的
1回答
鸿蒙天猫app老是卡死,要么就是无法返回
1回答
想要本Harmonyos实战的书
3回答
华为笔记本可以升级鸿蒙系统么?
1回答
鸿蒙系统微信收藏的内容怎么转笔记?(好像不自带)
1回答
上一篇:
鸿蒙14天IOT开发实战-笔记(3.2)
下一篇:
鸿蒙14天IOT开发实战-笔记(3.4)
社区精华内容
目录
精选
客服
订阅鸿蒙技术特刊,精选内容抢先看
微信扫码关注,即刻订阅