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

c – POSIX中正确的消息队列使用情况,第1张

概述在实时 *** 作系统中使用消息队列让我感到很困惑.给出的代码似乎将消息队列用于骨骼:即使将变量传递给另一个类对象也是通过MQ完成的.我总是在IPC中使用MQ的概念.问题是:什么是正确使用消息队列? 在实时 *** 作系统环境中,您经常遇到必须保证以固定时间表执行代码的问题.例如.你可能有一个函数,每10毫秒调用一次.不早,不迟. 为了保证这种硬时序约束,您必须编写在任何情况下都不能阻止时间关键代码的代码. 此处 在实时 *** 作系统中使用消息队列让我感到很困惑.给出的代码似乎将消息队列用于骨骼:即使将变量传递给另一个类对象也是通过MQ完成的.我总是在IPC中使用MQ的概念.问题是:什么是正确使用消息队列?解决方法 在实时 *** 作系统环境中,您经常遇到必须保证以固定时间表执行代码的问题.例如.你可能有一个函数,每10毫秒调用一次.不早,不迟.

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

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

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

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

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

总结

以上是内存溢出为你收集整理的c – POSIX中正确的消息队列使用情况全部内容,希望文章能够帮你解决c – POSIX中正确的消息队列使用情况所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1213688.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存