事件组的本质:一个整数
里面的每一个bit,表示一类事件
任务A:可以等待这个整数的"bitx,bity,bitz....."都被设置为1.
这就是"AND"的关系
也可以等待这个整数的"bitx bity bitz..."任意一个被设置为1.
事件组有一个特别的地方在于:
1.假设任务A,B都在等待bit0事件
2.任务C设置了bit0事件.
3.这个时候我们的任务A 任务B都会被同时唤醒 无论是优先级高低 还是 先等待
有了事件组,我们就有了另一种方法解决:任务A如何及时得到多个队列的数据.
如果任务1 想等待队列1 和队列2的数据
任务A可以等等事件组:等待bit1 bit2的任何一位被设置
任务B写队列1 时候,也可以设置事件组bit1
任务C写队列2时候,也可以设置事件组bit2
这样无论谁写了队列1 或者 队列2 都可以唤醒任务A
这个时候我们的任务就可以根据得到的事件是哪个bit 去读对应的队列
示例代码如下;