前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >UCOSII操作系统学习之任务间的通信(1)

UCOSII操作系统学习之任务间的通信(1)

作者头像
全栈程序员站长
发布2022-08-26 14:17:20
1K0
发布2022-08-26 14:17:20
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

1.任务间通讯方式:信号量和邮箱

为了把描述事件的数据结构统一起来,UCOSII 使用叫做事件控制块(ECB)的数据结构来描述诸如信号量、邮箱(消息邮箱)和消息队列这些事件。信号量,邮箱,消息队列都是一类事件。

2.信号量: 1) 创建信号量OS_EVENT *OSSemCreate (INT16U cnt)

2)请求信号量 OSSempend(OS_EVENT *pevent,INT16U timeout,INT8U *err;

3) 发送信号量(访问共享资源结束后,释放信号量)OSSemPost(OS_EVENT *pevent);

4)删除信号量(不需要某个信号量时) OSSemDel(OS_EVENT *pevent,INT8U opt,INT8U *err)。

3.邮箱:在多任务操作系统中,常常需要在任务与任务之间通过传递一个数据(这个数据叫消息)的方式来进行通信。为了达到这个目的,可以在内存中创建一个存储空间作为该数据的缓冲区。如果把这个缓冲区称之为消息缓冲区,这样在任务间传递数据的最简单办法就是传递消息缓冲区的指针。我们把用来传递消息缓冲区指针的数据结构叫做邮箱。

1)创建消息邮箱:OS_EVENT *OSMboxCREAT(void *msg);函数中的参数msg为消息的指针,函数的返回值为消息邮箱的指针。

2) 向消息邮箱中发送消息函数 OSMBoxPost(OS_EVENT *pevent,void *msg);其中pevent为消息邮箱的指针,msg为消息指针。

3) 请求邮箱:OSMboxPend ( vOS_EVENT *pevent, INT16U timeout, INT8U err),这个函数的主要作用就是查看邮箱指针OSEventPtr是否为NULL,如果不是NULL就把邮箱中的消息指针返回给调用函数的任务,同时用OS_NO_ERR通过函数的参数err通知任务获取消息成功;如果邮箱指针OSEventPtr是NULL,则使任务进入等待状态,并引发一次任务调度。pevent为请求邮箱指针,timeout为等待时限,err为错误信息。

4)查询邮箱状态:OSMboxQuery(OS_EVENT *pevent,OS_MBOX_DATA *pdata),其中pevent为纤细邮箱指针,pdata为存放邮箱信息的结构。

5)删除邮箱函数:OS_EVENT *OS_MboxDel(OS_EVENT *pevent,INT8U opt,INT8U *err);其中pevent为消息邮箱指针,opt为删除选项,err为错误信息

4.对任务控制块的理解

任务控制块就是一个结构体,结构体中定义了许多与任务相关的变量,包括优先级等。任务堆栈和任务控制块是一一对应的关系,任务堆栈可以理解为一个存储器,每个任务都有一个任务堆栈,任务堆栈就是装任务控制块的,只是不是直接装,而是通过任务控制块里面的任务堆栈指针变量指向任务堆栈而已,同时可以将所有任务控制块链接为一个任务链表,这样方便任务的管理,任务管理实质是对任务链表的管理。

UCOSII操作系统学习之任务间的通信(1)
UCOSII操作系统学习之任务间的通信(1)

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/144088.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
消息队列 CMQ 版
消息队列 CMQ 版(TDMQ for CMQ,简称 TDMQ CMQ 版)是一款分布式高可用的消息队列服务,它能够提供可靠的,基于消息的异步通信机制,能够将分布式部署的不同应用(或同一应用的不同组件)中的信息传递,存储在可靠有效的 CMQ 队列中,防止消息丢失。TDMQ CMQ 版支持多进程同时读写,收发互不干扰,无需各应用或组件始终处于运行状态。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档