rt-thread创建线程后怎么运作(rt-thread线程挂起不成功)

技术RT-Thread线程间通信学习过程是怎样的今天就跟大家聊聊有关RT-Thread线程间通信学习过程是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。下面

今天跟大家聊聊RT-Thread线程间通信的学习过程,可能很多人都不太了解。为了让大家更好的了解,边肖为大家总结了以下内容,希望大家能从这篇文章中有所收获。

以下是与RT-Thread多线程相关的最后一个重要知识的总结:线程间通信。前一篇文章多次提到,一个大任务分成几个小任务,这些小任务之间必然存在各种关系,导致这些小任务的线程无法各行其是,必须考虑其他任务线程的运行情况。

既然有了线程间同步,多个线程就可以相互通信了,那为什么还需要线程间通信呢?线程间通信到底是什么?这种方法有哪些应用场景?边肖试图从以下几个方面总结RT-Thread线程间通信的学习过程。

RT-Thread线程间通信学习过程是怎样的

线程间通信的相关概念

什么是线程间通信?沟通,顾名思义,就是双方都需要沟通和交谈。一般来说,线程A在工作过程中会有一些数据或信息,这样线程B在收到数据或信息后就可以继续完成指定的任务和工作。

为什么两个线程要通信?同样,多个任务线程不是独立的。当他们工作时,他们需要根据业务场景相互沟通。或者以音乐播放器为例。当歌词阅读线程从硬盘中读出歌词时,需要将这串歌词告诉显示线程,让它显示歌词。这个“讲”的动作是通过线程间的通信来实现的。

2.png

既然都是为了协调线程的工作状态而设计的,那么线程间同步和线程间通信有什么区别呢?不同的是线程间同步能做的事情太有限了。线程间的同步只是告诉对方“不要跑太快,等我~”,而线程间的通信则意味着有大量的数据和信息要告诉对方。万一线程A对线程B有很多话要说,线程同步的方法不能满足要求,需要线程间的通信。

RT-Thread线程间通信学习过程是怎样的

当邮箱正在使用时,它可能是空的或满的。当邮箱为空时,接收邮件的线程会选择挂机等待,或者等待超时。当邮箱满了,发送邮件的线程会选择挂起或者直接返回一个满邮箱的返回值。

系统内核提供了如下与邮箱相关的API函数接口,如下图所示。

RT-Thread线程间通信学习过程是怎样的

当线程A想要发送消息时,首先从空闲消息块链表中取出一块空间,将消息加载到其中后,将消息块挂到非空消息块链表的尾部。如果在紧急模式下发送消息,消息块将链接到非空消息链表的队列头。当一个线程得到一条消息时,它总是在链表的头部得到这条消息。

系统内核提供了如下与消息队列相关的API函数接口,如下图所示。

RT-Thread线程间通信学习过程是怎样的

系统内核提供了以下与信号相关的API函数接口,如下图所示。

RT-Thread线程间通信学习过程是怎样的

线程间通信的注意事项

在多线程通信过程中,邮箱、消息队列、信号这三种线程间通信方式有一些注意事项:

1.使用email进行线程间通信时,由于一封email最多只能有4个字节的长度,如果想要传输更多的数据信息,可以使用结构体封装信息,通过指针进行传输。

2.邮件传递是无阻塞的,因此可以应用于中断服务程序。但是邮件接收被阻止,可以设置接收超时的时间,在中断服务程序中不能使用邮件接收。

3.当邮箱中没有邮件并且超时时间不为0时,邮件接收过程将自动被阻止。当邮箱已满时,发送线程可以选择暂停等待,也可以在邮箱已满时直接返回错误代码。

4.消息队列是一种异步通信方式,消息队列中的消息始终遵循先进先出的原则。

5.您可以在线程或中断服务程序中向消息队列发送消息,但不能在中断服务程序中接收消息。

6.紧急消息可以发送到消息队列。紧急消息将被放在消息队列的链表的头部,并首先被等待的线程获取。

7.信号不同于信号量,两者的概念不能混淆。信号是软件级的软中断模式。

8.线程不会通过阻塞来等待信号,因为线程本身不知道信号(软中断)什么时候会到达。

9.默认情况下,信号的线程处理可以设置为捕获信号、忽略信号和处理信号。

看完以上,你对RT-Thread线程间通信的学习过程有了更好的了解吗?如果您想了解更多知识或相关内容,请关注行业资讯频道,感谢您的支持。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/150150.html

(0)

相关推荐

  • 兰色妖姬,蓝色妖姬是什么花

    技术兰色妖姬,蓝色妖姬是什么花蓝色妖姬是一种加工花卉,颜色为蓝色兰色妖姬。 由月季和蔷薇多种杂交及研制所得。它通常是用一种染色剂和助染剂调合成着色剂,将鲜花喷染成型,最早来自荷兰。据花卉专家介绍,世界上极少有自然生长的蓝

    生活 2021年11月1日
  • html中设置背景颜色的语句是(html中设置背景颜色的代码是)

    技术在html中设置背景颜色的代码是什么这篇文章主要为大家展示了“在html中设置背景颜色的代码是什么”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“在html中设置背景颜色的

    攻略 2021年12月19日
  • 如何实现基于ssm+mysql+jsp的网上商城

    技术如何实现基于ssm+mysql+jsp的网上商城本篇文章为大家展示了如何实现基于ssm+mysql+jsp的网上商城,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一.项目介绍

    攻略 2021年10月25日
  • 香港云与VPS的区别云服务器香港

    技术香港云与VPS的区别云服务器香港任何稳运行的网站都需要的云服务器与VPS服务器平台的基石。如果不了解这些云服务器和VPS,选择合适的网络托管类型可能既乏味又耗时。下面就来简单介绍一下二者的区别什么是香港云服务器? 云

    礼包 2021年12月17日
  • 448. 找到所有数组中消失的数字

    技术448. 找到所有数组中消失的数字 448. 找到所有数组中消失的数字给你一个含 n 个整数的数组 nums ,其中 nums[i] 在区间 [1, n] 内。请你找出所有在 [1, n] 范围内但

    礼包 2021年12月16日
  • flinkstream flinksql 优缺点(flink sql和datastream的区别)

    技术如何正确使用FlinkStreamSQL本篇文章为大家展示了如何正确使用FlinkStreamSQL,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、前期准备项目路径:htt

    攻略 2021年12月23日