专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > VxWorks

关于中断和信号量的有关问题

发布时间:2010-06-14 16:49:51 文章来源:www.iduyao.cn 采编人员:星星草
关于中断和信号量的问题
我想在中断中发送信号量 在别的地方接受信号量 以保持同步通信, 但发现总是中断过了几十个毫秒才能收到信号量,请问大牛们,有什么办法能解决这个问题么? 或者信号量本来就是释放获取操作相对较慢?

------解决方案--------------------
“中断过了几十个毫秒才能收到信号量”,是指中断发了信号量之后几十毫秒,“别的地方”才能接收到信号量?

系统是时间片轮流的,你的“别的地方”应该就是个线程,优先级不高的话,无法很快享受到该信号量的。

还有,你的中断中发完信号量之后,还做了什么?是立即结束了?还是又做了许多事?
------解决方案--------------------
中断的优先级最高,相比其他的任务

所以确保你在进中断一开始就发信号,并且在中断里面尽量少地进行费时的操作


------解决方案--------------------
根据你的描述应该是你接收的那个task的优先级比较低,
同时别的task优先级高,并且有事件满足,
比如
你有task1优先级150,在semTake(samA)等待你中断中的那个信号量samA
同时task2优先级140,在semTake(samB)等待另一个信号量samB
设这两个信号量都已经发出,
那么必然是要等到task2处理完samB,才会去处理task1的.
你去把你接收信号量的那个task1的优先级改成130,就可以了
至于定位是你的程序中哪个task是这里说的task2,你可以用shell看看,那个task在ready,
------解决方案--------------------
在shell中查看比它优先级高的任务有哪些,是否会影响调度
------解决方案--------------------
应该是优先级的问题
补充一点,你这个信号量创建的时候用的是什么参数啊,是FIFO的还是PRIORITY的?会不会还有别人也PEND在上面啊
------解决方案--------------------
将你要同步的任务优先级提到最高,然后计算时间,这种情况下应该是最快的。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: