完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
任哲的第三版书中讲:OSSemPost()在对信号量的计数器操作之前,首先检查是否还有等待该信号量的任务:如果没有将信号量计数器OSEventCnt加1,;如果有,则调用调度器OS_Sched()去运行等待任务中优先级最高的任务。
问题1:不懂最后一句,调用调度器应该是针对所有任务中优先级最高的就绪任务,而不应该只针对等待事件的任务啊? 问题2:不理解这里引发调度有什么意义,是及时的让等待事件的任务中优先级最高的就绪任务得到执行吗?如果是为什么引发调度前不判断信号量计数器是否为0,如果为0,即使发生了调度,等待事件的任务中优先级最高的就绪任务也不会请求到信号量啊? 求高手指点,不理解,谢谢了。 |
|
相关推荐
6个回答
|
|
第一个问题,信号量就是释放给等待该信号量的优先级最高的任务(或者广播给所有等待该信号量的任务),其他任务收不到该信号量;
第二个问题,之所以引发调度就是为了让等待该信号量的最高优先级任务运行。之所以有任务在等待信号量,就是因为该信号量的计数值为0,所以不存在你这样的讨论。
最佳答案
|
|
|
|
求指点,我憋了一下午了,也没想明白
|
|
|
|
duzailian 发表于 2015-8-20 17:05 谢谢啦,后来回家过了2遍pend和post的源码才算理解。还想请教个问题,MDK开发时,如果仿真运行起来后,是不可以打断点的吧,只能运行仿真之前可以打断点。 |
|
|
|
woshiyulei 发表于 2015-8-25 15:23 当然{:1:} |
|
|
|
duzailian 2015-8-20 第一个问题,信号量就是释放给等待该信号量的优先级最高的任务(或者广播给所有等待该信号量的任务),其他任务收不到该信号量; 第二个问题,之所以引发调度就是为了让等待该信号量的最高优先级任务运行。之所以有任务在等待信号量,就是因为该信号量的计数值为0,所以不存在你这样的讨论。 |
|
|
|
中断服务子程序
|
|
|
|
只有小组成员才能发言,加入小组>>
UCOSII中断中添加OSSemPost(Sem);程序无法运行
4965 浏览 1 评论
在BC5.0上编译uC/OS-II出现"eeror writing object file",怎样处理???
3181 浏览 1 评论
544浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-5 21:28 , Processed in 0.729490 second(s), Total 88, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号