Портативная библиотека С++ для IPC (процессы и разделяемая память), Boost vs ACE vs Poco?

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

Спасибо, за вашу помощь!

Ответ 1

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

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

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

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

Ответ 2

Мне нравится добавлять Apache portable runtime. На самом деле это не С++, но, конечно, вы можете использовать его. В заголовках даже есть "внешний" C "".

Включено:

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

Проблема с boost заключается в том, что она имеет сильные требования к компилятору С++. Особенно кросс-компиляторы имеют проблемы, например. сильное использование шаблона, так что простая библиотека C более "портативна".