1-事件组
出现的渊源:
无论是信号量、互斥量、队列,都只能通知一个任务,事件组可以实现广播,直接唤醒所有满足条件的任务
特性:A负责接收事件组,C负责写事件组。其中,需要表示的有:需要那些事情才能触发、事情之间的关系(与、或),则使用低位来表示事件,A的第0、2位 置1 则表示希望0事件和2事件发生,第1位 置0则表示不关注,然后用高八位来表示这两个事件是同时发生还是其一发生时唤醒任务A。若是或,则C将第0位 置1时,将遍历链表,发现A符合条件,则唤醒A,若有其他符合条件的任务,也一并唤醒
调用方法:
创建:
设置事件组(写事件)
注意
等待事件:
pdtrue为and,
实例:等待事件0 and 事件1(用1左移n位则n位使能,用或操作并起来)
实例:写事件0
建议操作:
1-将等待放在while前,则等到事件,被唤醒后才能开始整整进行任务
2-将等待放在while里,等到事件执行一次。
问题:
现3的优先级比较高,接收到广播后3会先运行(mdelay),完成后自行删除
在任务中若加了释放信号量(上一张的内容),即
就会卡死,任务二就进入不了
若是删掉,便能正常进行
不知道原因是什么。
(互斥量之前仅定义,并未获取过)(所以可能互斥量不能重复释放?)
确实不能哈哈