c++ - 用于 IPC(进程和共享内存)的可移植 C++ 库,Boost vs ACE vs Poco?

标签 c++ boost ipc process

我需要一个可移植的 C++ 库来执行 IPC。到目前为止,我一直使用 fork() 和 SysV 共享内存,但这将我限制在 Linux/Unix 上。我发现有 3 个主要的 C++ 库提供可移植的解决方案(包括 Windows 和 Mac OS X)。我真的很喜欢 Boost,并且想使用它,但我需要流程,而且到目前为止,这似乎只是一个实验性分支!?我以前从未听说过 ACE 或 POCO,因此我陷入困境,我不知道该选择哪个。我当然需要 fork()、sleep()(usleep() 会很棒)和共享内存。性能和文档也是重要的标准。

感谢您的帮助!

最佳答案

Boost Interprocess 自 Boost 1.35 以来就已经存在(如果没记错的话应该是 3 年前的事了)。

ACE 存在的时间更长,但从事物的声音来看,它可能有点矫枉过正 -- ACE 是一个库,您似乎只需要它包含的一小部分内容。这不一定是一个主要问题,但要记住这一点。特别是,一个真正为大型项目设计的库对于较小的项目可能看起来(或可能)有点笨拙。 ACE 还主要用于网络开发,其中包括 IPC,因为(例如)您可能希望从多个协作进程中构建看起来像单个服务器的东西,如果是这样,您显然需要一种方法来构建这些协作进程.

POCO 更像 ACE —— 它基本上是一个恰好包含一些 IPC 功能的网络库。同样,您正在考虑使用更大、更雄心勃勃的库中的一小部分。

根据您的需求,我可能会使用 Boost——它似乎最适合您所说的需求。 POCO 可能是我的第二选择。尽管它与 Boost 是分开的,但它似乎在很大程度上遵循类似的设计理念——特别是它旨在与标准库集成,而 ACE 在标准库中往往更包罗万象。

关于c++ - 用于 IPC(进程和共享内存)的可移植 C++ 库,Boost vs ACE vs Poco?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3019081/

相关文章:

c++ - 在具有不兼容代码的 C++ 代码中使用 C 库

c++ - 如何在 C++ 中的不同翻译单元之间共享枚举实例?

c++ - 编译时结合 fno-rtti lib 和 rtti lib?

java - C 进程和 JAVA 应用程序之间的 FIFO 问题

c++ - Perl:IPC::Shareable 和 SWIG'ed C++ 对象不一致

c++ - 编写具有多个等式的 if(..) 语句的紧凑方法

c++ - 使用来自自身 C++ 的变量

c++ - Boost shared_ptr 断言失败但值不为 NULL

c++ - 在 tee.hpp 中 boost 断言 'result1 ==n && result2 == n'

python - Linux IPC : Locking, 但不是基于文件的锁定