L.K*_*Koh 5 ipc zeromq boost-interprocess c++11
我正在考虑自定义对象的进程间共享。我当前的实现使用 ZeroMQ,其中对象被打包成一条消息并从进程 A 发送到进程 B。
我想知道使用 boost::interprocess 实现并发容器是否会更快(其中进程 A 将插入到容器中,进程 B 将从中检索)。不确定这是否比在进程 A 中序列化对象然后在进程 B 中反序列化它更快。
只是想知道是否有人做过基准测试?比较两者在概念上是否正确?
我同意尼姆的观点,他们太不同了,很难比较。
ZeroMQinproc使用共享内存作为字节传输。
Boost.Interprocess 似乎主要是在共享内存中构造对象,可供多个进程/线程访问。然而它确实有消息队列,但它们也只是需要序列化对象的字节传输,就像您必须使用 ZeroMQ 一样。它们不是对象容器,因此与 ZeroMQ 更具可比性,但与 Boost.Interprocess 所代表的内容相去甚远。
我已经完成了 ZeroMQ / STL 容器混合。耶克。我使用 C++ STL 队列来存储对象,然后使用 ZeroMQ PUSH/PULL 套接字来控制哪个线程可以从该队列读取。读取线程在 ZeroMQ 轮询中被阻止,当它们收到消息时,它们会锁定队列并从中读取对象。这避免了序列化对象,这很方便,所以速度相当快。这不适用于 PUB/SUB,这意味着在接收者之间复制对象,这需要对象序列化。
| 归档时间: |
|
| 查看次数: |
2640 次 |
| 最近记录: |