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

时间:2010-06-10 22:45:46

标签: c++ boost ipc process

我需要一个可移植的C ++库来进行IPC。到目前为止我使用了fork()和SysV共享内存,但这限制了我使用Linux / Unix。我发现有3个主要的C ++库提供便携式解决方案(包括Windows和Mac OS X)。我真的很喜欢Boost,并且想要使用它,但我需要进程,看起来这只是一个实验分支,直到现在!?我以前从未听说过ACE或POCO,因此我被困住了,我不知道选择哪一个。我需要fork(),sleep()(usleep()会很棒)和共享内存当然。绩效和文件也是重要的标准。

谢谢你的帮助!

2 个答案:

答案 0 :(得分:7)

Boost Interprocess自Boost 1.35开始就已存在(如果内存服务的话应该是3年前的事情)。

ACE已经存在了很长时间,但从事情的声音来看,它可能有点过分 - ACE是一个库,而你似乎只想要它所包含的一小部分。这不一定是一个主要问题,但要记住这一点。特别是,一个真正为大项目设计的库对于较小的项目而言似乎(或者)有点笨拙。 ACE也主要用于网络开发,包括IPC,因为(例如)您可能希望在许多协作流程中构建看似单个服务器的东西,如果是这样,您显然需要一种方法来构建这些协作流程

POCO更像是ACE - 它基本上是一个恰好包含一些IPC功能的网络库。再一次,你正在考虑使用更大,更雄心勃勃的图书馆的一小部分。

基于你想要的东西,我可能会使用Boost - 它似乎最适合你所说的你想要的东西。 POCO可能是我的第二选择。虽然它与Boost分开,但它似乎主要遵循类似的设计理念 - 特别是它意味着与标准库集成,其中ACE往往更全面。

答案 1 :(得分:1)

我想添加Apache portable runtime。它不是真正的c ++,但当然你可以使用它。标题甚至包括“extern”C“”。

包括:

  • 共享内存
  • 网络连接
  • 信号
  • 互斥
  • 许多其他事情。

boost的问题在于它对c ++编译器有很强的要求。特别是交叉编译器存在例如问题。强大的模板用法,使普通的C库“更加便携”。

相关问题