HCIA-HarmonyOS设备开发认证V2.0-轻量系统内核基础-事件event

在这里插入图片描述

目录

  • 一、事件基本概念
  • 二、事件运行机制
  • 三、事件开发流程
  • 四、事件使用说明
  • 五、事件接口
  • 坚持就有收获

一、事件基本概念

事件是一种实现任务间通信的机制,可用于实现任务间的同步,但事件通信只能是事件类型的通信,无数据传输。一个任务可以等待多个事件的发生:可以是任意一个事件发生时唤醒任务进行事件处理;也可以是几个事件都发生后才唤醒任务进行事件处理。事件集合用 32 位无符号整型变量来表示,每一位代表一个事件。

事件的第 25 位为保留位,不可以进行位设置。

请添加图片描述

事件(Event)是一种任务间的通信机制,可用于任务间的同步操作。事件的特点是:

  • 任务间的事件同步,可以一对多,也可以多对多。一对多表示一个任务可以等待多个事件,多对多表示多个任务可以等待多个事件。但是一次写事件最多触发一个任务从阻塞中醒来。
  • 事件读超时机制。
  • 只做任务间同步,不传输具体数据。

提供了事件初始化、事件读写、事件清零、事件销毁等接口。

二、事件运行机制

事件初始化:会创建一个事件控制块,该控制块维护一个已处理的事件集合,以及等待特定事件的任务链表。
写事件:会向事件控制块写入指定的事件,事件控制块更新事件集合,并遍历任务链表,根据任务等待具体条件满足情况决定是否唤醒相关任务。

读事件:如果读取的事件已存在时,会直接同步返回。其他情况会根据超时时间以及事件触发情况,来决定返回时机:等待的事件条件在超时时间耗尽之前到达,阻塞任务会被直接唤醒,否则超时时间耗尽该任务才会被唤醒。

读事件条件满足与否取决于入参 eventMask 和 mode,eventMask 即需要关注的事件类型掩码。mode 是具体处理方式,在 los_event.h 中定义了以下三种情况:

  • 所有事件(LOS_WAITMODE_AND):读取掩码中所有事件类型,只有读取的所有事件类型都发生了,才能读取成功。
  • 任一事件(LOS_WAITMODE_OR):读取掩码中任一事件类型,读取的事件中任意一种事件类型发生了,就可以读取成功。
  • 清除事件(LOS_WAITMODE_CLR):LOS_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读取指定事件类型,超时时间为相对时间:单位为Tick
LOS_EventWrite写指定的事件类型
清除事件LOS_EventClear清除指定的事件类型
校验事件掩码LOS_EventPoll根据用户传入的事件ID、事件掩码及读取模式,返回用户传入的事件是否符合预期
销毁事件LOS_EventDestroy销毁指定的事件控制块

坚持就有收获

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/681782.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux——网络通信TCP通信常用的接口和tco服务demo

文章目录 TCP通信所需要的套接字socket()bind()listen()acceptconnect() 封装TCP socket TCP通信所需要的套接字 socket() socket()函数主要作用是返回一个描述符,他的作用就是打开一个网络通讯端口,返回的这个描述符其实就可以理解为一个文件描述符&a…

代码随想录刷题笔记 DAY 25 | 组合问题 No.77 | 组合求和III No.216 | 电话号码的字母组合 No.17

文章目录 Day 2501. 组合问题(No. 77)2.1 题目2.2 笔记2.3 代码 02. 组合求和III(No. 216)2.1 题目2.2 笔记2.3 代码 03. 电话号码的字母组合(No. 17)3.1 题目3.2 笔记3.3 代码3.4 补充 Day 25 01. 组合问…

InstantBox:开箱即用的临时 Linux 环境

在云计算和虚拟化技术日益成熟的今天,我们有时需要一个快速、简单、临时的 Linux 环境来进行各种任务。这就是 InstantBox 的用武之地。 什么是 InstantBox? InstantBox 是一个开源项目,它可以快速启动临时的 Linux 系统,并提供…

微软Bing地图获取栅格瓦片或图块

bing地图获取栅格瓦片或图块 获取元数据 https://dev.virtualearth.net/REST/v1/Imagery/Metadata/{imagerySet}?key{BingMapsKey}imagerySet:要为其请求元数据的影像类型。官方说中国支持以下两个值:RoadOnDemand、VibrantDark BingMapsKey&#xff…

669. 修剪二叉搜索树

给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留在树中的元素的相对结构 (即,如果没有被移除,原有的父代子代关系都应当保留)。…

【前沿技术杂谈:迁移学习】欧洲人工智能法案对人工智能开发者的意义 [2023 年 12 月更新]

【前沿技术杂谈:迁移学习】欧洲人工智能法案对人工智能开发者的意义 [2023 年 12 月更新] 定义、一般原则和禁止做法人工智能系统开发者基于风险的义务固定和通用人工智能开发人员(第 3/28 条)基础模型的提供者(第 28b…

C++笔记:类与对象的语法

文章目录 1 简单认识面向过程与面向对象1.1 面向过程1.2 面向对象 2 类的引入:struct -> class3 类的定义3.1 class 定义类的语法3.2 成员变量的命名建议 4 类的访问限定符4.1 class 和 struct 的区别4.2 C更喜欢用class定义类的原因 5 类的作用域5.1 声明定义合…

Cost S-curve

成本S曲线 Cost S-curve 每个月成本预算,柱形图 每个月成本累积(合计):成本S曲线,折线图,但是肯定都是上升的 echarts图表:

java客运管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java客运管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql5.0&#…

Java实现中学生家校互联系统 JAVA+Vue+SpringBoot+MySQL

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 学生管理模块2.2 课堂表现模块2.3 考试成绩模块2.4 家校留言模块2.5 校园通知模块 三、系统设计3.1 用例设计3.2 实体类设计3.2.1 课堂表现实体类设计3.2.2 考试成绩实体类设计3.2.3 家校留言实体类设计3.2.4 校园通知实…

现代化端口扫描工具RustScan

今天是大年初五,喜迎财神 ,祝大家✔️顺风顺水 ✔️诸事如意 ✔️财源滚滚 ✔️大吉大利 顺便提一下,老苏的博客启用了新域名: https://laosu.tech 什么是 RustScan ? RustScan 是一款现代化的端口扫描器。能快速找到端…

AutoGen实战应用(三):多代理协作的数据可视化

之前我完成了关于AutoGen的两篇博客,还没有读过这两篇博客的朋友可以先阅读以下,这样有助于对AutoGen的初步了解: AutoGen实战应用(一):代码生成、执行和调试_autogen 支持的model-CSDN博客 AutoGen实战应用(二):多代…

Vue3.0(六):VueX 4.x详解

Vuex4状态管理 什么是状态管理 在开发中,我们的应用程序需要处理各种各样的数据,这些数据需要保存在应用程序的某一个位置,对于这些数据的管理,就是 状态管理目前前端项目越来越复杂,多组件共享同一数据的状态很常见…

【排序】归并排序

归并排序 动图演示: 基本思想:分治思想 归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子…

小白学Halcon100例:如何应用极坐标的展开及逆变换?

这里写目录标题 什么是极坐标系?在halcon中对应的算子halcon实例程序输出结果:原图什么是极坐标系? 1、极坐标系(polar coordinates)是指在平面内由极点、极轴和极径组成的坐标系。在平面上取定一点O,称为极点。从O出发引一条射线Ox,称为极轴。再取定一个单位长度,通常…

“操作符大揭秘:一篇文章让你秒懂所有!”

目录 1. ⼆进制介绍 2. 原码、反码、补码 3. 移位操作符 4. 位操作符:&、|、^ 5. 逗号表达式 6. 下标访问[]、函数调⽤() 7. 操作符的属性:优先级、结合性 8. 整型提升 9. 算术转换 10. 表达式求值 正文开始: 1. ⼆进制 其实我…

Mysql的安装、使用、优势与教程

一.安装 1.在小皮的设置界面检测3306端口,保障3306端口可用; 2、在小皮的首面界面,启动MySQL; 3、进行环境变量设置,找到MySQL的路径,进行复制; 4、在Windows的搜索栏内,输入“环境…

区块链互操作协议

1. 引言 Alexei Zamyatin等人2019年论文 SoK: Communication Across Distributed Ledgers。 参考资料 [1] 2019年论文 SoK: Communication Across Distributed Ledgers [2] A list of blockchain-related SoK papers [3] 2021年视频 FC21: SoK: Communica…

【机器学习】数据清洗之处理异常点

🎈个人主页:甜美的江 🎉欢迎 👍点赞✍评论⭐收藏 🤗收录专栏:机器学习 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步…

数据结构——lesson2线性表和顺序表

目录 前言 一、顺序表是什么? 1. 静态顺序表:使用定长数组存储元素 2. 动态顺序表:使用动态开辟的数组存储。 二、接口实现 1.动态顺序表存储 2.基本增删查改接口 (1)初始化顺序表 (2)顺序表摧毁 (3)检查空间 (4)顺序表打印 (5)顺…