梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记 原创

梅科尔陈新杰
发布于 2022-8-8 17:07
浏览
0收藏

@toc

任务管理

简介和相关介绍

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

任务的调度机制

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

任务管理的实现

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

接口详讲

osThreadNew(osThreadFunc_t func,voidargument,const osThreadAttr_tattr
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
osThreadFunc_t func:任务函数名
voidargument:指针
const osThreadAttr_t
attr:参数列表,包含任务函数名,任务栈大小,任务优先级这些参数
返回值:任务的ID,根据ID可实现对任务的挂起,恢复,删除

代码介绍

  1. 运行该部分代码,进入串口,显示先执行一次任务,再执行两次任务二
    梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
    梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
    梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
    优先级:attr.priority = ,数字越大,优先级越高
  2. 修改代码展示优先级
    定义两个变量
    梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
    分别在任务一和任务二中作如下修改
    梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
    修改任务创建函数
    梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
    注意打开文件,将SAMGR_Bootstrap();注释掉
    梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
    然后修改任务创建函数的启动函数为SYS_RUN(Thread_example);
    编译、烧录、点击复位按钮
    打开串口工具
    梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
    最后任务删除
    如何查看:在删除任务之后打印hello,会发现串口当中不会打印,说明任务已被删除
    梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
    梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

软件定时器

基本概念

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

运作机制

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

软件定时器的创建

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

代码讲解

运行现有代码

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

扩展实验

将定时器1改为单词定时器
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
运行结果:1为单词定时器,停止之后两秒钟再执行停止程序,所以显示failed;
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
成功方法,将延时缩短至50U,保证停止程序在时钟1运行过程当中执行
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

信号量开发

基本概念

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

运作机制

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

实现功能

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

代码介绍

整体代码

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

基础实验

在任务一中申请两次,可以看到每秒钟2、3同时获取信号量

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

在任务1中申请一次,则可以看到任务2、3交替打印(另一个任务则被阻塞)

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

原理:释放一次信号量,计数值+1;获取一次信号量,计数值-1

扩展实验

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

如何去使用信号量的删除接口

任务2获取成功后执行,删除,则之后的获取信号量的操作都以失败告终

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

事件任务管理开发

基本概念

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

运作机制

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

功能实现

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

代码运行

每次打印一个事件id

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

任务阻塞

只发送了一个任务,且逻辑关系为“且”(osFlagsWaitAll)。需要三个任务同时执行才能停止阻塞

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

解决办法

同时发送三个任务
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
将逻辑关系改为“或”(osFlagsWaitAny)
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

互斥锁

基本概念

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

运作机制

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

功能实现

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

代码实现

高中低优先级产生互斥

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

删除互斥锁

执行两次删除

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

消息队列

基本概念

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

运作机制

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

功能实现

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

代码实现

消息的发送和接收

1秒钟的频率打印,受发消息的时间限制

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

扩展实验

梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区
梅科尔工作室OpenHarmony设备开发培训笔记-第三章学习笔记-鸿蒙开发者社区

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
收藏
回复
举报
回复
    相关推荐