事件组操作逻辑
在我们使用事件组进行操作时,会用到位操作的逻辑,以及链表的操作逻辑。例如在使用等待事件函数时,第一个参数代表事件组,第二个代表等待的时间,第三个代表对应的事件位发生后退出时是否清除标志位,第四个代表是否需要等待所有事件发生,第五个参数代表愿意等待的时间。
如何实现这个等待函数呢?在内部函数中,我们会发现要想实现互斥访问数据对事件组的位进行操作时,首先需要关闭调度器,而不是关中断,因为在中断中无法对位进行操作。
中断中如何实现事件组位设置
在中断中,我们通过对应中断事件组设置函数,其实是无法直接设置事件组的,中断中做的操作仅仅只是将需要设置的事件组写入一个定时器任务的就绪队列,无法直接设置事件组的对应的位。在定时器时间到了之后自动执行这个任务,而不是在中断中执行。