51CTO首页
AI.x社区
博客
学堂
精品班
软考社区
免费课
企业培训
鸿蒙开发者社区
WOT技术大会
IT证书
公众号矩阵
移动端
视频课
免费课
排行榜
短视频
直播课
软考学堂
全部课程
软考
华为认证
厂商认证
IT技术
PMP项目管理
免费题库
在线学习
文章
资源
问答
课堂
专栏
直播
51CTO
鸿蒙开发者社区
51CTO技术栈
51CTO官微
51CTO学堂
51CTO博客
CTO训练营
鸿蒙开发者社区订阅号
51CTO软考
51CTO学堂APP
51CTO学堂企业版APP
鸿蒙开发者社区视频号
51CTO软考题库
鸿蒙开发者社区
首页
帖子
问答
资源
课堂
直播
发现
登录/注册
51CTO
中国优质的IT技术网站
51CTO博客
专业IT技术创作平台
51CTO学堂
IT职业在线教育平台
活动
短视频
专栏
极客Show
鸿蒙技术特刊
鸿蒙14天IOT开发实战-笔记(3.3)
^浅忆佳瓦~苦思甜
发布于 2022-7-31 09:48
5907浏览
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
微信
举报
举报
微信扫码分享
删除帖子
16px
12px
14px
16px
18px
24px
32px
color-font
Created with Sketch.
默认
上标
下标
行内代码
0x0
默认
1
1.15
1.5
2
2.5
3
回复
添加资源
相关推荐
鸿蒙
14
天
IOT
开发
实战
-
笔记
(1.1)
^浅忆佳瓦~苦思甜
• 8625浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(1.2)
^浅忆佳瓦~苦思甜
• 5888浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(1.2)
^浅忆佳瓦~苦思甜
• 6337浏览
• 1回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
1.3
^浅忆佳瓦~苦思甜
• 6276浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
1.4
^浅忆佳瓦~苦思甜
• 4596浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(1.5)
^浅忆佳瓦~苦思甜
• 5522浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(2.3)
^浅忆佳瓦~苦思甜
• 4907浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(3.1)
^浅忆佳瓦~苦思甜
• 6638浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(3.2)
^浅忆佳瓦~苦思甜
• 5979浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(3.4)
^浅忆佳瓦~苦思甜
• 6609浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(3.6)
^浅忆佳瓦~苦思甜
• 5632浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(4.1)
^浅忆佳瓦~苦思甜
• 6636浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(4.2)
^浅忆佳瓦~苦思甜
• 5296浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(4.3)
^浅忆佳瓦~苦思甜
• 5850浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(4.4)
^浅忆佳瓦~苦思甜
• 5781浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(5.1)
^浅忆佳瓦~苦思甜
• 7004浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(5.2)
^浅忆佳瓦~苦思甜
• 5034浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(6.5)
^浅忆佳瓦~苦思甜
• 5469浏览
• 0回复
鸿蒙
14
天
IOT
开发
实战
-
笔记
(7)
^浅忆佳瓦~苦思甜
• 7194浏览
• 0回复
^浅忆佳瓦~苦思甜
LV.2
这个用户很懒,还没有个人简介
觉得TA不错?点个关注精彩不错过
33
帖子
0
视频
133
声望
1
粉丝
私信
关注
最近发布
鸿蒙14天IOT开发实战-笔记(7)
2022-08-01 11:49:57发布
鸿蒙14天IOT开发实战-笔记(6.5)
2022-08-01 11:13:13发布
热门推荐
【有奖互动活动】# HarmonyOS 连接·突破# 我在现场活动
96回复
#HarmonyOS连接·突破# 问题征集活动
40回复
鸿蒙Flutter开发知识地图
0回复
鸿蒙性能优化之卡顿优化
1回复
聊聊 2025 年最值得关注的 IT 技术趋势,一起来投票!
8回复
相关问题
鸿蒙应用开发实战创作目的
1回答
getDefaultCellularDataSlotIdSync实战分享?
0回答
#鸿蒙通关秘籍#如何在HarmonyOS中实现luch-request的应用开发实战?
1回答
#鸿蒙通关秘籍# 如何在鸿蒙实战开发中维护视频播放索引以确保正确播放?
0回答
如何判断某一年是365天还是366天?
1回答
上一篇:
鸿蒙14天IOT开发实战-笔记(3.2)
下一篇:
鸿蒙14天IOT开发实战-笔记(3.4)
社区精华内容
目录
3.3 内核开发之信号量
(2)信号量运作机制
(3)cmsis_os2的API信号量接口简介
精选
客服
订阅鸿蒙技术特刊,精选内容抢先看
微信扫码关注,即刻订阅