Портативная библиотека C ++ для IPC (процессы и общая память), Boost против ACE против Poco? - PullRequest
11 голосов
/ 11 июня 2010

Мне нужна портативная библиотека C ++ для выполнения IPC. До сих пор я использовал разделяемую память fork () и SysV, но это ограничивает меня Linux / Unix. Я обнаружил, что есть 3 основные библиотеки C ++, которые предлагают портативное решение (включая Windows и Mac OS X). Мне действительно нравится Boost, и я хотел бы использовать его, но мне нужны процессы, и кажется, что это пока только экспериментальная ветка !? Я никогда не слышал о ACE или POCO раньше, и поэтому я застрял, я не знаю, какой из них выбрать. Мне нужны fork (), sleep () (usleep () было бы здорово) и общая память, конечно. Производительность и документация также являются важными критериями.

Спасибо за помощь!

Ответы [ 2 ]

7 голосов
/ 11 июня 2010

Boost Интерпроцесс существует с Boost 1.35 (что должно быть примерно 3 года назад, если память не изменяет).

ACE существует дольше, но, судя по всему, это излишне - ACEэто большая библиотека, и вам кажется, что вам нужно лишь немного того, что в нее входит.Это не обязательно главная проблема, но об этом нужно помнить.В частности, библиотека, которая действительно предназначена для больших проектов, может показаться (или быть) немного неуклюжей для меньших.ACE также предназначен в первую очередь для развития сети, включая IPC, потому что (например) вы можете захотеть создать один сервер из множества взаимодействующих процессов, и если это так, вам, очевидно, нужен способ построения этих взаимодействующих процессов..

POCO намного больше похож на ACE - это, по сути, сетевая библиотека, которая включает некоторые возможности IPC.Опять же, вы рассматриваете возможность использования довольно маленькой части гораздо большей, более амбициозной библиотеки.

Исходя из того, что вы хотите, я бы, вероятно, использовал Boost - кажется, он наиболее подходит дляты сказал, что хочешь.POCO, вероятно, будет моим вторым выбором.Несмотря на то, что он отделен от Boost, он, похоже, в значительной степени следует схожей философии проектирования - в частности, он предназначен для интеграции со стандартной библиотекой, где ACE имеет тенденцию быть более всеобъемлющим.

1 голос
/ 08 апреля 2011

Мне нравится добавлять Портативную среду выполнения Apache .Это не совсем C ++, но, конечно, вы можете использовать его.Заголовки даже имеют "внешний" C "".

Включено:

  • Общая память
  • Сетевые подключения
  • Сигналы
  • Мьютексы
  • и многое другое.

Проблема с boost заключается в том, что он предъявляет строгие требования к компилятору c ++.В частности, кросс-компиляторы имеют проблемы, например, с интенсивным использованием шаблонов, так что простая библиотека C является «более переносимой».

...