Zephyr内核——内核服务(数据传递)——邮箱

邮箱

邮箱是一个内核对象,它提供了超出消息队列对象功能的增强的消息队列功能。邮箱允许线程同步或异步地发送和接收任何大小的消息。

概念

可以定义任意数量的邮箱(仅受可用RAM的限制)。每个邮箱都由其内存地址引用。

邮箱具有以下关键字属性:

  • 已发送但尚未收到的消息的发送队列。
  • 正在等待接收消息的线程的接收队列。

必须初始化邮箱才能使用。这将将其两个队列都设置为空。

邮箱允许线程交换消息,但不允许isr交换消息。发送消息的线程称为发送线程,而接收该消息的线程称为接收线程。每个消息只能由一个线程接收(即,不支持点到多点和广播消息传递)。

使用邮箱交换的消息进行非匿名处理,允许参与交换的两个线程知道(甚至指定)另一个线程的身份。

消息格式

消息描述符是一种数据结构,它指定消息数据的位置以及邮箱如何处理消息。在访问邮箱时,发送线程和接收线程都提供了一个消息描述符。邮箱使用消息描述符在兼容的发送和接收线程之间执行消息交换。邮箱还会在交换期间更新某些消息描述符字段,从而允许两个线程都知道发生了什么。

邮箱邮件包含0个或多个字节的邮件数据。消息数据的大小和格式是由应用程序定义的,可以因消息而异。消息数据有两种形式:

消息缓冲区是由发送或接收消息的线程提供的内存区域。数组或结构变量通常可以用于此目的。

消息块是从内存池中分配的内存区域。

消息可能同时没有消息缓冲区和消息块。一个既没有消息数据形式的消息被称为空消息。

注意

存在消息缓冲区或内存块,但包含实际数据的零字节的消息不是空消息。

消息生

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值