您使用了什么sysv / posix消息队列?

时间:2010-02-28 16:56:51

标签: c ipc posix

我从未见过任何使用posixsysv消息队列的项目或任何内容 - 并且好奇,你们有什么问题或项目用于它们?

3 个答案:

答案 0 :(得分:2)

我有一系列需要按顺序执行的命令,但主程序流并不依赖于它们的完成,因此我将它们排队并通过System V消息队列将它们传递给另一个进程,以便独立执行主程序。由于消息队列提供了异步通信协议,因此它们非常适合此任务。

说实话,我使用的是System V消息队列,因为我之前从未使用过它,而且我想这样做。我确信我还可以使用其他IPC方法。


自从我完成任何真正的VxWorks编程以来已经有一段时间了,但您也可以找到VxWorks应用程序中使用的消息队列。根据 VxWorks Application Programmer's Guide (Google搜索),单个CPU中的主要任务间通信机制是消息队列。 VxWorks使用两个消息队列子例程库(POSIX和VxWorks)。

答案 1 :(得分:1)

我曾写过一个文本模式I / O生成器实用程序,它有一个负责更新UI的线程和一些工作线程来完成实际的I / O工作。当工作线程完成I / O时,它向UI线程发送了更新消息。我使用POSIX消息队列实现了这个消息系统。

为什么要这样实现呢?当时这听起来像个好主意,我很好奇他们是如何工作的。我想我可以解决问题并同时学习一些东西。我可以使用许多不同的技术,我不认为我选择这种技术有任何深刻的原因。直到后来我才意识到这一点,但是当我不得不将实用程序移植到另一个系统时,我很高兴我使用了POSIX队列(它也符合POSIX标准,所以我不必担心移植外部库来获取我的应用程序运行)。

答案 2 :(得分:1)

您可以将它用于IPC,因为它是IPC机制。使用此机制,您可以编写多进程事件处理应用程序,其中所有应用程序都在使用队列,并且每个应用程序都在等待特殊类型的消息(要发生的特殊事件)。当消息到达时,该进程接收消息,处理该消息并将结果放回队列,以便其他进程可以使用它。
一旦我使用消息队列编写这样的应用程序。它非常容易使用,不需要信号量等进程间同步机制。在您需要的只是将结构或某种打包数据发送到其他进程的情况下,您可以使用它来代替内存映射文件的共享内存。消息队列比任何其他IPC机制都更容易使用。
This book包含您需要了解的有关Linux中的消息队列和其他IPC机制的所有信息。