假如每一个任务做一件事,事件组就是当任务A执行了或者任务B执行了,就去执行任务C。
或是,但任务B和任务A执行了采取执行任务D。
而任务B或者任务A里面的东西是我自己决定的(比如当我设定按键1按下才将bit0置1)
事件组结构体,用来给任务C和D等待某些事件的,任务AB不需要等待。
事件组的等待机制:
a、关闭调度器
(为什么不关中中断呢,因为它不会在中断中使用。
而队列那些要关中断,是因为他会在中断中使用,有ISR函数。
)
b、当前uxEventBits是否满足,满足就执行相应事件;不满足的话,返回err或者休眠,休眠就将自己放入xTasksWaitingForBits这个链表,然后改变状态(挂起)
虽然没有关中断,gpio那些也能运行,但是 ++uxSchedulerSuspended;不是零的话,是不能调度。
else分支才是真正的任务切换。
所有等待事件组公用一个链表。