3

我编写了一个实现和一个自动代码生成器,允许不同的进程使用消息队列进行进程间通信。

我的实现适用于原始数据类型,但当用户想要传递非 POD [普通旧数据类型] 类型时失败。

根据人们对 SO的建议,我阅读了有关 Boost Serialization 以及它如何允许序列化甚至非 POD 的信息。

问题 :

Q1。序列化/反序列化本身是否被视为 IPC 机制,还是与其他实现一起使用?[换句话说,我应该使用序列化来增强我的消息队列实现,还是应该继续将序列化作为 IPC 机制本身?]

如果是,它会不会很慢,因为它涉及将数据写入硬盘并从那里读取?

或者这只是我的误解,所有像 d-bus 这样的 IPC 实际上可能会将数据保存到磁盘上,然后将文件标识符传递给其他进程以读取?

4

1 回答 1

2

序列化/反序列化本身并不是 IPC 机制 - 您需要使用管道之类的东西在不同进程之间进行通信。话虽如此,您绝对可以对这些管道的数据进行序列化/反序列化。

使用这样的策略可能会很慢,但如果是这样,任何缓慢都会来自序列化和缓冲。如果您使用管道,您只是通过内存传递序列化字节,而不是通过写入磁盘然后从磁盘读取。

前段时间我在 C# 中写了一个这样的模式的实现,如果你对一些实现想法感兴趣,这里有一篇关于它的博客文章。

于 2013-03-11T07:23:59.553 回答