1. 队列主要用于任务与任务、中断与任务之间的消息传递。

2. 创建队列时,请注意队列中数据单元的长度。

3. 通常情况,队列被作为FIFO(先进先出)使用,即数据从队列尾写入,从队列首读。当然,数据也可由队列首写入。

4. 向队列中写入数据是通过字节拷贝,将数据拷贝到队列中;从队列中读取数据也是通过字节拷贝,将数据从队列中拷贝出来。

说明:读数据分为两种情况:① 读取后,删除队列中的数据;② 读数据后,不删除队列中的数据。

5. 队列不属于任何任务。所有的任务或中断函数都可以向同一队列写入或读出。一般情况,一个队列可由多方写入,一方读出。

6. 多个任务因等待同一队列而阻塞,当队列有效时,只能有一个任务会被解除阻塞,这个任务就是所有等待任务中,优先级最高的任务。若优先级最高的任务有多个,那么解除阻塞的态的任务是对待时间最长的任务。

7. 写队列阻塞同读队列阻塞一样。

8. 队列传递结构体,实现混合型数据的传递。

9. 如果队列存储的数据单元较大,最好用队列传递数据的指针,而不是单字节的拷贝,但需要注意以下几点:

1)指针指向内存空间的所有权必须明确;

当任务间通过指针共享内存时,必须保证不会有任意两个任务同时修改内存中的数据,或其他行为使得数据无效或产生不一致的现象。

原则上,共享内存在其指针发送到队列前,其内容只允许被发送的任务间访问,共享内存指针从队列中被读出后,其内容也只允许被接收任务访问。

2)指针指向的内存空间必须有效。

如果内存是动态分配的,只应该有一个任务负责对其进行内存释放。当这段内存空间被释放后就不能以任何方式(任何任务),对这段内存进行访问。

3)不要使用指针访问任务栈上分配的空间。

因为栈帧发生改变时,栈上的数据将不再有效。

10. 在中断服务函数中使用队列相关函数,请使用中断安全版本,只有以”FromISR”或”FROM_ISR”结束的API 函数或宏才可以在中断服务例程中,详见参考手册。http://i.cnblogs.com/Files.aspx

FreeRTOS——队列管理的更多相关文章

  1. FreeRTOS系列第17篇---FreeRTOS队列

    本文介绍队列的基本知识,具体源代码分析见<FreeRTOS高级篇5---FreeRTOS队列分析> 1.FreeRTOS队列 队列是基本的任务间通讯方式.能够在任务与任务间.中断和任务间传 ...

  2. mq队列管理器命令

    dspmq: 队列管理器显示 QMCIPSA-------队列管理器 runmqsc QMSAA  运行查找Q队列名 运行MQ命令 runmqsc QmgrName 如果是默认队列管理器,可以不带其名 ...

  3. postfix队列管理

    队列管理单元的服务器程序--qmgr,是整个postfix系统的中心枢纽.所有邮件,包括等待送出与从外界收进来的,都必须通过队列.了解队列的运行原理以及postfix如何处理队列,有助于你解决问题.  ...

  4. hadoop队列管理(指定queue跑程序)

    hadoop 升级到cdh5后,队列管理被取消,而是统一用资源池分配. hadoop2.0版本,Hadoop采用了平级队列组织方式,,管理员可将用户分到若干个扁平队列中,在每个队列中,可指定一个或几个 ...

  5. MQ队列管理器搭建(三)

    MQ集群及网关队列管理器的搭建 描述:     如上图所示,为MQ的集群搭建部署图.CLUSTERA.CLUSTERB分别是两个集群,其中Qm1-Qm3.GateWayA为CLUSTERA集群中的队列 ...

  6. MQ队列管理器搭建(二)

    MQ级联方式使用场景 使用场景:     如上图所示,Application1与Application2要进行通信或者消息互换,使用MQ中间件作为中介.上图中,Application1与Applica ...

  7. MQ队列管理器搭建(一)

    多应用单MQ使用场景 如上图所示,MQ独立安装,或者与其中一个应用同处一机.Application1与Application2要进行通信,但因为跨系统,所以引入中间件来实现需求.   Applicat ...

  8. com.ibm.msg.client.jms.DetailedJMSSecurityException: JMSWMQ2013: 为队列管理器提供的安全性认证无效

    com.ibm.msg.client.jms.DetailedJMSSecurityException: JMSWMQ2013: 为队列管理器“zm_queue_manager”提供的安全性认证无效, ...

  9. Postfix常用命令和邮件队列管理(queue)

    本文主要介绍一下postfix的常用命令及邮件队列的管理: Postfix有以下四种邮件队列,均由管理队列的进程统一进行管理: maildrop:本地邮件放置在maildrop中,同时也被拷贝到inc ...

随机推荐

  1. 一天搞定CSS: 清除浮动(float)--13

    上一节已经说明了为什么要清除浮动了.这里我们就来解决浮动产生的各种问题. 为什么要清楚浮动? 地址:http://blog.csdn.net/baidu_37107022/article/detail ...

  2. 浏览器本地储存方式有哪些?cookie、localStorage、sessionStorage

    现阶段,浏览器提供的储存方式常用的有三种,cookie.localStorage.sessionStorage 1.cookie 概念:cookie 是浏览器中用于保存少量信息的一个对象 基本特征: ...

  3. android网络监测

    public static boolean isNetworkConnected(Context context) { if (context != null) { ConnectivityManag ...

  4. 【原创+史上最全】Nginx+ffmpeg实现流媒体直播点播系统

    #centos6.6安装搭建nginx+ffmpeg流媒体服务器 #此系统实现了视频文件的直播及缓存点播,并支持移动端播放(支持Apple和Android端) #系统需要自行安装,流媒体服务器配置完成 ...

  5. Java中的框架基础面试知识

    spring mvc 工作机制(原理): DispatcherServlet主要用作职责调度工作,本身主要用于控制流程 Spring mvc运行原理 1.springmvc将所有的请求都提交给Disp ...

  6. VR虚拟现实技术在教育领域的前景展望

    VR虚拟现实技术在教育领域的前景展望 VR虚拟现实技术能迅速火起来,是基于它突破了人们对三维空间在时间与地域上的感知限制,以及市场需求愿景的升级.此技术可广泛地应用到城市规划.室内设计.工业仿真.古迹 ...

  7. 从String类型字符串的比较到StringBuffer和StringBuilder

    1. String类型 String类源码 为了从本质上理解String类型的特性所在,我们从String类型的源码看起,在源码中String类的注释中存在以下: /**Strings are con ...

  8. 【开源】做了一个WinForm窗体的投影组件,能够为窗口添加影子效果

    最近手头上的项目终于忙得差不多了,想起好久没有更新了的NanUI,再看着每天QQ群未读消息闪烁的标志,突然才发现似乎愧对了群里各位喜爱NanUI的朋友们.于是乎,就想趁这几天有时间,好好的修复一下Na ...

  9. Linux下重启多个 tomcat 服务的脚本

    由于修改tomcat的配置文件或手动操作数据库数据后,tomcat的缓存和redis的缓存很严重,需要经常重启tomcat来释放缓存,经常就是手动重启. # .查找tomcat的进程ID ps -ef ...

  10. Linux常用操作命令(一)

    java程序员要学习一些linux知识 java程序员要学习一些linux知识,下面就是您要学的命令:大型J2EE应用都在建构在linux环境下的.开发环境下我们可以通过samba映射成本地的网络驱动 ...