[ru] Промежуточный статус работ над SObjectizer-5.6 (2019.03.23)

4 views
Skip to first unread message

Yauheni Akhotnikau

unread,
Mar 23, 2019, 6:27:05 AM3/23/19
to SObjectizer
По предварительному плану работ над версией 5.6.0 предполагалось, что к концу марта 2019-го должна появится первая бета-версия SObjectizer-5.6. На данный момент очевидно, что этого не произойдет. Поэтому есть смысл обозначить что в SObjectizer-5.6 уже было сделано и что еще предстоит сделать.

Итак, вот какие изменения уже произошли в SObjectizer-5.6 по сравнению с SObjectizer-5.5:
  • для отсылки сообщений теперь используются только send-функции. Теперь нет доступа к методам deliver_message из mbox-ов;
  • внутри каждого mbox-а теперь хранится ссылка на environment_t, что сделало возможным привести все функции send_periodic и send_delayed к одному формату. Т.е. теперь send_delayed(target_agent, pause, args) выглядит так же, как и send_delayed(target_mbox, pause, args);
  • в SObjectizer-5.6 нет больше ad-hoc агентов;
  • в SObjectizer-5.6 нет больше поддержки tuple_as_message;
  • в SObjectizer-5.6 нет больше методов, которые принимают "голые" указатели. Например, coop_t::add_agent и environment_t::register_agent_as_coop теперь ожидают только unique_ptr;
  • функции introduce_coop и introduce_child_coop теперь возвращают значения. Возвращается то значение, которое возвратила переданная в эти функции лямбда;
  • переделан механизм диспетчеров. Теперь нет публичных и приватных диспетчеров. Новые диспетчеры очень похожи на приватные диспетчеры из SO-5.5: создаются самим разработчиком когда они ему нужды и автоматически удаляются SObjectizer-ом когда больше диспетчеры никем не используются. Общая же концепция привязки агентов к диспетчерам не изменилась: по-прежнему существуют disp_binder-ы, которые связывают агентов с диспетчерам. Только сейчас манипуляции с disp_binder-ами производятся через shared_ptr, а не через unique_ptr. Что позволяет использовать один и тот же disp_binder для привязки разных агентов из разных коопераций к одному и тому же диспетчеру;
  • существенно переделан механизм коопераций в SObjectizer-а. Сами кооперации никуда не делись и кооперации можно увязывать во взаимоотношения "родитель-потомок". Но у коопераций теперь нет имен. Метод register_coop() возвращает специальный дескриптор зарегистрированной кооперации (экземпляр типа coop_handle_t). Этот дескриптор затем может использоваться как для создания дочерних коопераций, так и для дерегистрации ненужных уже коопераций. Данный механизм не быстрее, чем его аналог из SO-5.5, но гораздо лучше масштабируется, когда в приложении одновременно регистрируются и дерегистрируются кооперации на разных рабочих потоках. Например, новый бенчмарк parallel_parent_child на моем ноутбуке для версии 5.5.24.3 показывает время 44s, а для версии 5.6.0 -- 11s. Это результаты для следующих значений параметров: roots=3, levels=5, level-size=9.

Что еще предстоит сделать в версии 5.6.0:
  • переделать механизм синхронного взаимодействия между агентами (этот вопрос рассматривался здесь);
  • провести окончательную доводку (тестирование, профилирование, приведение в актуальное состояние Doxygen-комментариев).
После чего останется работа по написанию документации для версии 5.6.0. А также выпуск адаптированной под SObjectizer-5.6 версии so_5_extra.

Почему не удалось уложиться в ранее определенный срок?

Переделка механизма коопераций заняла более чем в 2.5 раза больше времени, чем ожидалось.

Каковы сейчас планы релиза версии 5.6.0?

К сожалению, в ближайшую неделю в работе над SObjectizer-5.6 придется взять паузу, чтобы закрыть ряд вопросов по другим нашим проектам. Поэтому можно ожидать, что работа над версией 5.6.0 возобновиться в первых числах апреля 2019. А релиз первой бета-версии, при отсутствии серьезных проблем в реализации нового механизма синхронного взаимодействия между агентами, можно будет ожидать в середине апреля. В этом случае релиз SObjectizer-5.6 может произойти в начале мая 2019. Это оптимистичный сценарий, в котором работы над so_5_extra и обновленной документацией для SObjectizer-а происходят максимально быстро.

Reply all
Reply to author
Forward
0 new messages