RTT的IPC机制篇——邮箱

野火RTT第23章邮箱
2018年12月29日
10:47

消息队列、邮箱特性:可以一个或多个线程获取一个或多个消息或邮件。
注意点:
第一,FIFO方式排队。消息队列里面的消息、邮箱里面的邮件是按照FIFO方式排列的。
第二、优先级排队。当有多个线程读取消息或邮件时可以支持按优先级谁高谁先读取的原则或者按照FIFO方式读取的。

邮件的发送分为:阻塞方式发送、非阻塞方式发送。前者只能用于线程间发送,后者可以用于线程间发送,中断向线程发送邮件。
每封邮件都是固定大小:4字节,所以它只能发送4字节的数据或者存放数据的地址。不像消息大小用户可设。

邮件框里存放一份邮件,消息框里存放一个消息。邮件框总数、消息框总数有用户定义。不同的是消息总大小包含了一个消息头,每个消息框里都有一个消息头来指向消息。消息总大小:[消息头+消息大小]x消息框总数。而邮件框总数计算就简单了:邮件大小4个字节x邮件框总数。

阻塞发送函数与非阻塞发送函数的区别:非阻塞函数是调用阻塞函数只是超时等待时间参数值为0。

阻塞发送函数:邮箱满了就阻塞当前发送函数,有空邮件了,就被恢复线程,然后接着发送邮件,发送完就恢复因为读取邮箱而被阻塞的线程。

接受函数:当邮箱为空时,挂起当前线程,直到在发送函数里恢复被阻塞的线程,然后接着去读取,读完就恢复因发送被阻塞的线程。

这些线程阻塞的方式在创建邮箱的时候定义的是FIFO方式还是优先级方式。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值