硬汉嵌入式论坛

 找回密码
 立即注册
查看: 3247|回复: 3
收起左侧

[μCOS-III] 事件标志组自动清零问题

[复制链接]

98

主题

340

回帖

634

积分

金牌会员

积分
634
发表于 2016-6-22 21:05:49 | 显示全部楼层 |阅读模式
目标:任务A,B,C等多个任务都在等待事件A置位的发生;事件A置位发生之后任务A,B,C执行一次;
方案:利用事件标志组,A,B,C任务都阻塞等待事件A置位的发生;
疑问:A,B,C任务等待选项OPT中加入OS_OPT_PEND_FLAG_CONSUME选项,即事件满足之后清零该标志位,那么问题来了,如果事件A发生之后A,B,C都进入了就绪态,假如A的优先级最高,先被执行,执A事件时后该事件标志已经自动被清零,那么已经进入就绪态的任务B,C是否还会被调度?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2016-6-22 22:18:25 | 显示全部楼层
如果你的A,B,C任务Pend里面设置的是相同的标志位,当程序Post标志位以后,那么A,B,C任务就绪后,执行pend函数时都会执行一次清除操作,尽管高优先级任务A已经执行了一次清除操作。
A,B,C任务继续执行。
回复

使用道具 举报

98

主题

340

回帖

634

积分

金牌会员

积分
634
 楼主| 发表于 2016-6-23 09:47:17 | 显示全部楼层
嗯,谢谢,刚做了个简单的实验,结果是A,B,C可以正常调度。
也就是任务一旦进入就绪态之后即便触发任务进入就绪态的条件已经不成立,就绪态的任务依然会被调度,不会因为条件不成立就把就绪态的任务重新挂起;
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107049
QQ
发表于 2016-6-23 10:06:08 | 显示全部楼层

回 云琴箫龙 的帖子

云琴箫龙:嗯,谢谢,刚做了个简单的实验,结果是A,B,C可以正常调度。
也就是任务一旦进入就绪态之后即便触发任务进入就绪态的条件已经不成立,就绪态的任务依然会被调度,不会因为条件不成立就把就绪态的任务重新挂起; (2016-06-23 09:47) 
你的理解稍有偏差。
条件全都成立,具体看OSFlagXXXPend的源码就明白了,不存在不成立的情况。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-15 17:44 , Processed in 0.166767 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表