手机网站建设平台,密云青岛网站建设,百科网站建设,淘宝店铺首页设计目录 一、事件基本概念二、事件运行机制三、事件开发流程四、事件使用说明五、事件接口坚持就有收获 一、事件基本概念
事件是一种实现任务间通信的机制#xff0c;可用于实现任务间的同步#xff0c;但事件通信只能是事件类型的通信#xff0c;无数据传输。一个任务可以等… 目录 一、事件基本概念二、事件运行机制三、事件开发流程四、事件使用说明五、事件接口坚持就有收获 一、事件基本概念
事件是一种实现任务间通信的机制可用于实现任务间的同步但事件通信只能是事件类型的通信无数据传输。一个任务可以等待多个事件的发生可以是任意一个事件发生时唤醒任务进行事件处理也可以是几个事件都发生后才唤醒任务进行事件处理。事件集合用 32 位无符号整型变量来表示每一位代表一个事件。
事件的第 25 位为保留位不可以进行位设置。 事件Event是一种任务间的通信机制可用于任务间的同步操作。事件的特点是
任务间的事件同步可以一对多也可以多对多。一对多表示一个任务可以等待多个事件多对多表示多个任务可以等待多个事件。但是一次写事件最多触发一个任务从阻塞中醒来。事件读超时机制。只做任务间同步不传输具体数据。
提供了事件初始化、事件读写、事件清零、事件销毁等接口。
二、事件运行机制
事件初始化会创建一个事件控制块该控制块维护一个已处理的事件集合以及等待特定事件的任务链表。 写事件会向事件控制块写入指定的事件事件控制块更新事件集合并遍历任务链表根据任务等待具体条件满足情况决定是否唤醒相关任务。
读事件如果读取的事件已存在时会直接同步返回。其他情况会根据超时时间以及事件触发情况来决定返回时机等待的事件条件在超时时间耗尽之前到达阻塞任务会被直接唤醒否则超时时间耗尽该任务才会被唤醒。
读事件条件满足与否取决于入参 eventMask 和 modeeventMask 即需要关注的事件类型掩码。mode 是具体处理方式在 los_event.h 中定义了以下三种情况
所有事件LOS_WAITMODE_AND读取掩码中所有事件类型只有读取的所有事件类型都发生了才能读取成功。任一事件LOS_WAITMODE_OR读取掩码中任一事件类型读取的事件中任意一种事件类型发生了就可以读取成功。清除事件LOS_WAITMODE_CLRLOS_WAITMODE_AND|LOS_WAITMODE_CLR 或LOS_WAITMODE_OR|LOS_WAITMODE_CLR 时表示读取成功后对应事件类型位会自动清除。
事件清零根据指定掩码去对事件控制块的事件集合进行清零操作。当掩码为 0 时表示将事件集合全部清零。当掩码为 0xffff 时表示不清除任何事件保持事件集合原状。
事件销毁销毁指定的事件控制块。 三、事件开发流程
初始化事件控制块阻塞读事件控制块写入相关事件阻塞任务被唤醒读取事件并检查是否满足要求处理事件控制块事件控制块销毁
四、事件使用说明
进行事件读写操作时事件的第 25 位为保留位不可以进行位设置。对同一事件反复写入算作一次写入。执行 LOS_EventRead()时其中的事件类型掩码等于等待的所有事件类型掩码按位与LOS_WAITMODE_AND或是按位或LOS_WAITMODE_OR的结果。
五、事件接口
功能类别接口函数描述初始化事件LOS_EventInit初始化一个事件控制块读/写事件LOS_EventRead读取指定事件类型超时时间为相对时间单位为TickLOS_EventWrite写指定的事件类型清除事件LOS_EventClear清除指定的事件类型校验事件掩码LOS_EventPoll根据用户传入的事件ID、事件掩码及读取模式返回用户传入的事件是否符合预期销毁事件LOS_EventDestroy销毁指定的事件控制块
坚持就有收获