鸿蒙14天IOT开发实战-笔记(3.4)

^浅忆佳瓦~苦思甜
发布于 2022-7-31 10:00
浏览
0收藏

3.4 内核开发之事件管理

(1)事件的基本概念

  • 事件是一种实现任务间通信的机制,可用于实现任务间的同步,但事件通信只能是事件类型的通信,无数据传输。一个任务可以等待多个事件的发生:可以是任意一个事件发生时唤醒任务进行事件处理;也可以是几个事件都发生后才唤醒任务进行事件处理。事件集合用32位无符号整型变量来表示,每一位代表一个事件。
  • 多任务环境下,任务之间往往需要同步操作。事件可以提供一对多、多对多的同步操作。一对多同步模型:一个任务等待多个事件的触发;多对多同步模型:多个任务等待多个事件的触发。
  • 任务可以通过创建事件控制块来实现对事件的触发和等待操作。LiteOS的事件仅用于任务间的同步。

(2)事件的运作机制

  1. 读事件时,可以根据入参事件掩码类型uwEventMask读取事件的单个或者多个事件类型。事件读取成功后,如果设置LOS_WAITMODE_CLR会清除已读取到的事件类型,反之不会清除已读到的事件类型,需显式清除。可以通过入参选择读取模式,读取事件掩码类型中所有事件还是读取事件掩码类型中任意事件。
  2. 写事件时,对指定事件写入指定的事件类型,可以一次同时写多个事件类型。写事件会触发任务调度。
  3. 清除事件时,根据入参事件和待清除的事件类型,对事件对应位进行清0操作。
    鸿蒙14天IOT开发实战-笔记(3.4)-鸿蒙开发者社区

(3)cmsis_os2的API事件接口简介

鸿蒙14天IOT开发实战-笔记(3.4)-鸿蒙开发者社区

(4)事件使用

鸿蒙14天IOT开发实战-笔记(3.4)-鸿蒙开发者社区
鸿蒙14天IOT开发实战-笔记(3.4)-鸿蒙开发者社区

已于2022-8-23 14:30:49修改
收藏
回复
举报
回复
    相关推荐