打印

一个没看明白的函数,求教

[复制链接]
1004|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
aolongzx|  楼主 | 2015-3-16 14:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

ucosII中,任务删除函数 OSTaskDel (INT8U prio);中做了如下操作
1、从各种list中删除我们想要删除的任务
2、
OSLockNesting++;
OS_EXIT_CRITICAL();  
OS_Dummy();  
OS_ENTER_CRITICAL();
OSLockNesting--;
加锁,保证任务删除中不会切换到其他任务中去
开中断,然后执行一条空指令,关中断
3、删除任务tcb
我想问一下,2 这里为什么不把这几句话直接全都去掉,只有1和3,直接把任务从list中删除,再把tcb删除,全都完成之后在打开中断,为什么中间要加这几句,强制开一下中断执行1条中断指令后再返回来?

相关帖子

沙发
ZALIN| | 2015-3-16 14:54 | 只看该作者
减少中断潜伏时间

使用特权

评论回复
板凳
aolongzx|  楼主 | 2015-3-16 15:00 | 只看该作者
ZALIN 发表于 2015-3-16 14:54
减少中断潜伏时间

是因为防止中断时间过长,出现假死的情况?
不过前后的指令也不是特别多啊开中断后也没有几条指令了,再次打

使用特权

评论回复
地板
ZALIN| | 2015-3-16 15:03 | 只看该作者
可能会有任务切换

使用特权

评论回复
5
aolongzx|  楼主 | 2015-3-16 15:08 | 只看该作者
ZALIN 发表于 2015-3-16 15:03
可能会有任务切换

不会有任务切换产生吧,在一开始从list删除之前就已经把中断关了,如果在中间不加这几句的话
OS_EXIT_CRITICAL();  
OS_Dummy();  
OS_ENTER_CRITICAL();
不会有切换的可能性啊,所有中断都是关的。

使用特权

评论回复
6
ZALIN| | 2015-3-16 15:53 | 只看该作者
你说“不会有切换的可能性啊,所有中断都是关的”那中断潜伏的时间不是更长了?

在退出删除的任务的函数后,会检查是否需要进行任务切换,如果需要切换任务,中断潜伏的时间就长了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

18

帖子

0

粉丝