четверг, 14 августа 2014 г.

[prog.c++] Состоялся релиз SObjectizer 5.4.0

SObjectizer -- это реализация модели акторов для C++, позволяющая программировать на C++ с использованием работающих на разных нитях агентов, общающихся между собой посредством сообщений. SObjectizer существенно упрощает разработку событийно-ориентированных приложений, для параллельной и независимой обработки событий в которых требуется многопоточность и/или распределенность. SObjectizer использовался для создания как для мелких утилит, так и серьезных распределенных приложений, работающих под большой нагрузкой в режиме 24x7.

Последние несколько лет SObjectizer развивается на SourceForge как OpenSource проект под BSD-лицензией. Версия 5.4.0 является результатом очередного этапа развития проекта.

Версия 5.4.0 содержит несколько изменений и улучшений, среди которых можно выделить следующие:

  • новый тип mbox-а: multi-producer/single-consumer (MPSC). Позволяет организовать эффективное peer-to-peer взаимодействие агентов (ранее такое взаимодействие было частным случаем использования модели publish/subscribe). Накладные расходы на общение двух агентов через MPSC заметно ниже, чем при работе через старые multi-producer/multi-consumer mbox-ы;
  • для обработчиков событий можно указывать признак thread safety. По умолчанию все обработчики событий рассматриваются как not_thread_safe и для одного агента обработчики его событий запускаются строго последовательно. Если же событие помечено как thread_safe, но новый диспетчер adv_thread_pool может параллельно запустить несколько thread_safe-обработчиков для одного агента на разных нитях;
  • новый диспетчер thread_pool, который использует пул рабочих потоков и распределяет обработчики событий между этими потоками (здесь чуть подробнее о принципах работы этого диспетчера);
  • новый диспетчер adv_thread_pool, который так же использует пул рабочих потоков и распределяет обработчики событий с учетом флага thread safety (здесь чуть подробнее об этой возможности);
  • режим autoshutdown -- SObjectizer Environment завершает свою работу после дерегистрации последней кооперации;
  • теперь диспетчеров можно добавлять и после запуска SObjectizer Environment (ранее это нужно было делать только до старта Environment-а);
  • серьезная реорганизация внутренней кухни, увеличение производительности и улучшение масштабируемости.

Более подобно список изменений в версии 5.4.0 на русском языке описывается здесь.

Версия распространяется в виде сборки so-201408-00, в которую кроме SObjectzer 5.4.0 входит еще несколько SObjectizer-библиотек, предназначенных для разработки больших, распределенных приложений на основе SObjectizer, а именно:

  • so_log, служащая оберткой над ACE Logging и упрощающая логирование для агентов;
  • so_sysconf, позволяющая собирать большое приложение из маленьких кусочков, оформленных в виде dll/so-библиотек;
  • so_5_transport, оформляющая работу с TCP/IP соединениями в виде транспортных SObjectizer-агентов;
  • mbapi, являющаяся высокоуровневой библиотекой для обмена сообщениями между агентами или между компонентами распределенного приложения.

Примечание. Компилятор Microsoft Visual C++ 11 (т.е. MSVS2012) больше не поддерживается. Для компиляции под Windows теперь нужно использовать Visual C++ 12 (т.е. MSVS2013).

Релизная сборка может быть загружена с SourceForge в виде архива или же взята из svn-репозитория.

Wiki-раздел SObjectizer-а на SourceForge содержит более подробную информацию как об особенностях версии 5.4.0, так и о самом SObjectizer и его основах.

Комментариев нет: