加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – POSIX中正确的消息队列使用情况

发布时间:2020-12-16 09:34:43 所属栏目:百科 来源:网络整理
导读:在实时操作系统中使用消息队列让我感到很困惑.给出的代码似乎将消息队列用于骨骼:即使将变量传递给另一个类对象也是通过MQ完成的.我总是在IPC中使用MQ的概念.问题是:什么是正确使用消息队列? 解决方法 在实时操作系统环境中,您经常遇到必须保证以固定时间
在实时操作系统中使用消息队列让我感到很困惑.给出的代码似乎将消息队列用于骨骼:即使将变量传递给另一个类对象也是通过MQ完成的.我总是在IPC中使用MQ的概念.问题是:什么是正确使用消息队列?

解决方法

在实时操作系统环境中,您经常遇到必须保证以固定时间表执行代码的问题.例如.你可能有一个函数,每10毫秒调用一次.不早,不迟.

为了保证这种硬时序约束,您必须编写在任何情况下都不能阻止时间关键代码的代码.

此处不能使用posix线程同步原语.
您永远不能从时间关键代码中锁定互斥锁或aqurie信号量,因为不同的进程/线程可能已将其锁定.但是,通常允许您从时间关键代码中解锁一些其他线程(例如,释放信号量是可以的).

在这样的环境中,消息队列是交换数据的不错选择,因为它们提供了一种干净的方式将数据从一个线程传递到另一个线程而不会阻塞.

使用队列来设置变量听起来有点矫枉过正,但这是非常好的软件设计.如果你这样做,你就有了一个明确定义的时间关键代码接口.

编写确定性代码也很有帮助,因为你永远不会遇到竞争条件问题.如果通过消息队列设置变量,则可以确保时间关键代码以与发送时相同的顺序查看消息.混合直接内存访问和消息时,您无法保证这一点.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读