Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
Kernel
15天入门 第11天 对于事件与信号量的差异的问题的补充
发布于 2018-05-27 17:20:53 浏览:1320
订阅该版
* 本帖最后由 xyzjacky 于 2018-5-27 21:03 编辑 * 在今天的课程里,课程主持人有提到用事件可以替换信号量。 可能因为时间关系,主持人没有来得及细讲,导致这个说法有漏洞,因为信号量分了计数信号量和二值信号量,事件可以替换二值信号量,而不能替换计数信号量。 举两个例子来解释二值信号量与计数信号量的区别。 二值信号量就像是家里的电灯开关,你按一下(即有一个任务在进行发送),灯泡就亮一下(即一个任务在进行接收,并执行相关代码),你再按一下,它就关掉。 也就是说,二值信号量解决的问题是这种在第一时间就马上会被解决掉的控制,不会是有累积的。就像家里的电灯,它会第一时间就响应了你的操作,它不会拿个笔记本记录你按了多少次合闸,又按了多少次断闸操作,然后才来慢慢一个个依次执行。 事件要替换信号量,就只能替换这种二值信号量。 计数信号量就是可以累积的。打个比方,一个汽车工厂,它生产发动机的速度,肯定比生产方向盘的速度慢。那么在进行整车组装时,在一年内生产一百台整车,这一百个方向盘一个月就生产完成了,但是因为发动机等部件的生产速度慢,整车的生产就得等其他的部件。这里就可以用上计数信号量了。方向盘的生产就是信号量的发送方,整车的组装就是信号量的接收方。 方向盘很快的在生产,不停的进入库房,没有被及时的用掉,但在这一年生产期结束时,整车的组装还是消耗完了所有的方向盘。 其实简单的理解就是生产与消费的问题,生产的信号量在一个短暂时间段内不能被全部消费掉,出现了累积,但是在一个系统周期内,它是可以被全部消费掉的。即是说,计数信号量得在整个一个周期内,实现发送的信号量都被接收的这样一个均衡状态,否则你的系统就有崩溃的危险,而且危险系数会很高。 所以很显然,RT thread OS的事件标志组IPC不具备解决累积信号的功能,所以只能和二值信号量实现替换。
查看更多
0
个回答
默认排序
按发布时间排序
暂无答案,快来添加答案吧
撰写答案
登录
注册新账号
关注者
0
被浏览
1.3k
关于作者
xyzjacky
这家伙很懒,什么也没写!
提问
5
回答
9
被采纳
0
关注TA
发私信
相关问题
1
请教cpu使用率分析
2
选择FreeRTOS, 还是RT-Thread。
3
thread heap stack overflow ?
4
rtt消息队列delay问题
5
释放被删除线程的内存地方在哪里啊
6
请教:各线程结束后,释放其中的内存的连续性问题
7
STM32F103中断关于信号量、邮箱问题
8
RTT中的线程栈大小如何控制
9
关于线程由执行态变为挂起态的代码实现,,,
10
rt_malloc(rt_size_t size)内存分配函数最小分配尺寸问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
ota在线升级
UART
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
at_device
ulog
C++_cpp
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
张世争
8
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
KunYi
6
个答案
1
次被采纳
本月文章贡献
程序员阿伟
6
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
2
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部