【发布时间】:2011-01-22 01:06:49
【问题描述】:
【问题讨论】:
【问题讨论】:
我有一系列命令需要按顺序执行,但主程序流程不依赖于它们的完成,所以我将它们排入队列并通过 System V 消息队列将它们传递给另一个进程以独立执行主程序。由于消息队列提供异步通信协议,因此它们非常适合此任务。
说实话,我使用 System V 消息队列是因为我以前从未使用过它们,我也想使用它们。我确信我可以使用其他 IPC 方法。
我已经有一段时间没有进行任何真正的 VxWorks 编程了,但您也可以找到 VxWorks 应用程序中使用的消息队列。根据VxWorks Application Programmer's Guide(Google 搜索),单个 CPU 内的主要任务间通信机制是消息队列。 VxWorks 使用两个消息队列子程序库(POSIX 和 VxWorks)。
【讨论】:
我曾经编写过一个文本模式 I/O 生成器实用程序,它有一个负责更新 UI 的线程和一些工作线程来执行实际的 I/O 工作。当工作线程完成 I/O 时,它会向 UI 线程发送更新消息。我使用 POSIX 消息队列实现了这个消息系统。
为什么要这样实现?这在当时听起来是个好主意,我很好奇它们是如何工作的。我想我可以在解决问题的同时学到一些东西。我可以使用许多不同的技术,我不认为我选择这种技术有什么深刻的原因。直到后来我才意识到这一点,但我很高兴当我不得不将实用程序移植到另一个系统时我使用了 POSIX 队列(它也符合 POSIX,所以我不必担心移植外部库来获取我的应用程序运行)。
【讨论】:
您肯定可以将它用于 IPC,因为它是一种 IPC 机制。使用这种机制,您可以编写多进程事件处理应用程序,其中所有应用程序都在使用队列,并且每个应用程序都在等待特殊类型的消息(发生特殊事件)。当消息到达时,该进程获取消息,处理该消息并将结果放回队列中,以便其他进程可以使用它。
一旦我使用消息队列编写了这样的应用程序。它非常容易使用,并且不需要信号量等进程间同步机制。您也可以使用它来代替内存映射文件的共享内存,在您只需要向其他进程发送结构或某种打包数据的情况下,消息队列比任何其他 IPC 机制都更容易使用。
This book 包含您需要了解的有关 Linux 中的消息队列和其他 IPC 机制的所有信息。
【讨论】: