线程间是怎样进行通信的

        使用全局变量进行功能间的通信,rtthread提供了三个工具用于线程间的通信。

1、邮箱
2、消息队列
3、信号

1、邮箱

1.1 邮箱概念
        邮箱中的每一份邮件内容为4字节,在32位系统中刚好为一个指针的大小。rtthread将邮箱抽象成rt_mailbox。

1.2 邮箱api

        创建邮箱有动态和静态两种方式: rt_mb_create、rt_mb_init,与之对应的删除邮箱的方式为:rt_mb_delete和rt_mb_detach。
        在创建邮箱之后,可以使用发送和接收api:rt_mb_send和rt_mb_recv发送和接收邮件,rt_mb_send在邮箱为满时会返回 -RT_EFULL,增强版的rt_mb_send_wait在邮箱满时会挂起等待。

1.3 邮箱示例

2、消息队列
2.1 消息队列概念

        消息队列用于发送不固定长度的消息,线程获得的消息是最先进入消息队列的消息。rtthread将消息队列抽象成rt_messagequeue。

2.2 消息队列api

2.3 消息队列示例

3、信号
3.1 信号概念
        信号本质是软中断, 用来通知线程发生了异步事件,用做线程之间的异常通知、应急处理。

3.2 信号api

3.3 信号示例
        本示例采用软中断的方式处理信号,示例先创建的线程1安装了SIGUSR1信号,当示例发送信号时,线程1执行软中断程序。

  • 11
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值