完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
在A任务里来中断,必须马上停止B任务正在做的事情,需要B任务以很快的速度响应。
目前采用删除B任务来结束B正在做的事情。 B任务执行一次需要数秒,有信号量申请和释放。如果尚未执行到申请信号量,则删除表现正常。如果申请了未释放,删除B时死机。 如果使用删除任务req函数,那么B任务中不论在哪里判断这个删除请求都可能耽误较多时间,响应较慢。 考虑如何在A中知道B是否申请了信号量未释放,如果申请了就释放掉再删除B。这样是否可行? |
|
相关推荐
3个回答
|
|
1、看信号量结构体,在UCOSIII里面信号量结构体有个成员为:OwnerTCBPtr,此成员应该是用来记录正在使用此信号量的任务的。
2、不过UCOSII里面没有将信号量单列出来,而是统一用事件来表示,那就只能看事件结构体OS_EVENT里面有没有可用的信息,结构体如下: 3、你已经能够知道信号量正在被哪个任务使用了,那么问题就很简单了,你就不断的去判断,当发现信号量正在被你已经删掉的任务使用的时候那么你就手动释放一次信号量 就行了https://bbs.elecfans.com/file://C:%5CUsers%5CAdministrator%5CAppData%5CRoaming%5CTencent%5CUsers%5C827455031%5CQQ%5CWinTemp%5CRichOle%5CTPM8BYEJ(QNLKT~LL%124IE.png |
|
|
|
还么仔细研究过实现,都是匆匆忙忙拿来用,每次被催的实现目的。。。
|
|
|
|
先挂起B任务,等条件满足了再恢复B任务,不行么?
|
|
|
|
只有小组成员才能发言,加入小组>>
708 浏览 0 评论
1116 浏览 1 评论
2494 浏览 5 评论
2833 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2675 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
661浏览 9评论
671浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
789浏览 6评论
634浏览 5评论
679浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-26 02:58 , Processed in 1.131557 second(s), Total 85, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号