schua 发表于 2013-11-13 09:08:16

有关ucos的二元信号量或mutex在同一个任务中重复调用的问题

如果某一个task希望占用一部分资源,
使用ospend sem或mutex的函数。
这部分资源只允许在一个task里面使用,
但是这个task里面由于模块很复杂,
可能在callback里面多次运行ospend。
这样不就相当于task把自己锁住了吗?
不知道有什么好的办法呢?

dongfo 发表于 2013-11-13 09:22:55

同样的问题,我也遇到了,
我是不停地OSSemPend,发送信号量在中断中。目前运行的没啥问题,但总觉得不对劲

litguy 发表于 2013-11-13 09:34:35

自己用一个受保护的变量,通过查看这个变量的值
就知道是不是已经拥有信号量了,这个问题就解决了

太阳花 发表于 2013-11-13 09:34:53

OSSemPend();
callback();
OSSemPost();

只在最外面一层上锁
页: [1]
查看完整版本: 有关ucos的二元信号量或mutex在同一个任务中重复调用的问题