关于中断和信号量的有关问题
发布时间: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在上面啊
------解决方案--------------------
将你要同步的任务优先级提到最高,然后计算时间,这种情况下应该是最快的。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
Tilcon下的Table控件问题
VxWorks5.5+Tilcon5.4环境下~~
在程序中如何在Table的最后新增一行?
------解决方案-----------------...
-
关于vxworks的inflate/deflate
请问各位大侠,在vxworks中,针对不同架构的cpu的vxworks代码中,应该是采用相同的inflate/deflate解压...
-
tornado安装问题
请高手帮忙:
问下tornado的安装过程中,如果从开始菜单直接运行tornado,会提示错误,这是因为安装还没有完成,在C盘Torn...
-
vxworks系统启动很慢
小弟最近在做一个vxworks下的项目,目前系统基本上已经搭建起来了,但是系统从flash上启动的时候非常的慢,经查看...
-
请问一下,一个任务accept产生的socket描述符怎么在另一个task的send函数中用,把那个Socket ID作为全局可以吗???谢谢!
有两个任务,一个接...
-
taskspawn 分配一个任务时,参数中有优先级,堆栈大小,我要怎么来写啊?刚刚搞这个东西。
taskspawn 分配一个任务时,参数中有优先级,堆栈...
-
谁会裸机运行pentium的cpu
谁会裸机运行pentium的cpu,能不能简单讲讲?
就是将cpu引导到保护模式后,进入到一段用户代码,这段代码是个...
-
如何根据字符数组去执行相应的函数或者查找到变量(急!)
现在需要在没有操作系统的powerPC上完成这样一个类似串口的输入输出功能。注...
-
关于vxworks TFFS文件系统搭建时 format 死机问题
我修改了tffsconfig.c systffs.c config.h 等文件,已经显示了 type size但是...
-
vxworks解压缩
请问各位大侠,vxworks的解压缩源代码怎么看不到啊?它是采用的通用deflate/inflate算法吗?
在命令行中defl...