搜索
bottom↓
回复: 6

请教大家一个关于uC/OS-II信号量里OSEventCnt的问题。

[复制链接]

出0入0汤圆

发表于 2010-9-8 11:56:45 | 显示全部楼层 |阅读模式
任哲《嵌入式实时操作系统μC\OS-Ⅱ原理及应用》第一版的第116页。第二版的134页有如下图的一段话。我琢磨了半天,还是感觉怪怪的。
因为表中的OSEventCnt为3>0,但是为什么OSEventTbl[]表里还会有4个任务等待呀?


(原文件名:111111111111111111.JPG)

阿莫论坛20周年了!感谢大家的支持与爱护!!

你熬了10碗粥,别人一桶水倒进去,淘走90碗,剩下10碗给你,你看似没亏,其实你那10碗已经没有之前的裹腹了,人家的一桶水换90碗,继续卖。说白了,通货膨胀就是,你的钱是挣来的,他的钱是印来的,掺和在一起,你的钱就贬值了。

出0入0汤圆

发表于 2010-9-8 14:44:43 | 显示全部楼层
OSEventCnt为3  只是表明这个信号量被发出了3次(这个信号量目前可以被申请到3次)  并不意味着等待这个信号量的任务一定为3个

信号量的发出和等待不一定对应上 也不需要什么先后关系

可以有12个任务等待同一个信号量 当发出1个信号量时 最高优先级任务申请到可以继续执行 如果这个信号量再被发出一次次高优先级的
执行其他10个依次等待

也可以在没有任务申请这个信号量之前 连续发送12次信号量 这样 OSEventCnt为12
当此时有1个任务循环等待这个信号量   也就是说这个任务被允许执行12次 每次执行后OSEventCnt -- 并且扫描任务等待列表

出0入0汤圆

 楼主| 发表于 2010-9-8 23:08:37 | 显示全部楼层
那我不明白了,既然目前这个信号量可以被请求三次,那么下面的四个任务还等待干什么呢?
最起码,有三个任务不用等了,应该能够直接请求到这个信号量。

出0入0汤圆

发表于 2010-9-8 23:21:59 | 显示全部楼层
znyu2009你很有心,那么晚了实在不愿开电脑查书的哪页哪页,而你已经把图附上了,哈哈,赞一个,你的理解是对的,那个只是个示意图,实际中不会出现这种情况的

出0入0汤圆

 楼主| 发表于 2010-9-9 08:55:27 | 显示全部楼层
xuxi2009谢谢你。

出0入0汤圆

发表于 2010-9-9 10:02:00 | 显示全部楼层
额我想了想一般情况下确实是这样不会出现表中情况 但有例外

如果对信号量的操作都是通过 OSSemAccept OSSemPost  OSSemPend  OSSemCreat OSSemDel 这5个的话一定不会出现

OSEventCnt 和 任务等待列表里的任务数目 同时 >= 1 一定有一个 <= 1

不过有些时候可以人为的改变OSEventCnt 用最快的速度增加这个资源的可申请数量 又不想引起任务的切换 可以直接改OSEventCnt

就可能引起表中的情况了 不过这方法一般都不用,属于脱离RTOS思想。

出0入0汤圆

 楼主| 发表于 2010-9-9 11:09:11 | 显示全部楼层
回复【5楼】A-smith
额我想了想一般情况下确实是这样不会出现表中情况 但有例外
如果对信号量的操作都是通过 ossemaccept ossempost  ossempend  ossemcreat ossemdel 这5个的话一定不会出现  
oseventcnt 和 任务等待列表里的任务数目 同时 &gt;= 1 一定有一个 &lt;= 1
不过有些时候可以人为的改变oseventcnt 用最快的速度增加这个资源的可申请数量 又不想引起任务的切换 可以直接改oseventcnt  
就可能引起表中的情况了 不过这方法一般都不用,属于脱离rtos思想。
-----------------------------------------------------------------------

我也是这个样子想的,OSEventCnt 和 任务等待列表里的任务数目至少有一个为0.

您最后的一个想法是人为的修改OSEventCnt的数值,在有等待任务的情况下,
实现代码为;

pevent->OSEventCnt=cnt;
OSSemQuery(*pevent,*pdata);

然后到OS_SEM_DATA里查询。应该应会有这种情况。等待任务表里有任务,而且OSEventCnt>0;
不过应该很快就会因为目前有可以被申请的信号量,而使的请求信号量的任务进入就绪列表的。
所这您的所述也应该是一个“暂态”才对。

呵呵……谢谢两位。xuxi2009&A-smith
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-10-3 05:22

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表