LINUX.ORG.RU

Обновился инструмент для работы с агентами в C++: SObjectizer 5.5.4

 , , ,


0

2

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

Проект живет на SourceForge, распространяется под трехпунктной BSD-лицензией.

Версию 5.5.4 можно взять либо из секции Files на SF, либо из Svn-репозитория.

Если говорить кратко, то в версии 5.5.4 появилось следующее:

  • вспомогательные шаблонные методы make_agent и make_agent_with_binder (аналоги make_shared и make_unique из C++11/14), упрощающие создание экземпляров агентов;
  • приватные диспетчеры. Приватный диспетчер можно использовать только по прямой ссылке, которую получает только тот, кто создает такой диспетчер. Так же приватные диспетчеры автоматически уничтожаются, когда ими больше никто не пользуется;
  • лимиты для сообщений, т.е. возможность ограничить количество сообщений конкретного типа в очереди заявок для агента, что позволяет реализовывать простую защиту агентов от перегрузок штатными средствами SObjectizer-а;
  • новый тип context_t и дополнительный конструктор для базового типа agent_t, за счет чего упрощается создание агентов, использующих лимиты для сообщений, особенно при наследовании;
  • простейший вариант сбора и распространения мониторинговой информации о том, что происходит внутри SObjectizer Run-Time. В первую очередь этот вариант предназначен для предоставления возможности сохранения мониторинговой информации посредством таких инструментов, как statsd+graphite, Zabbix, Nagios и т.д.;
  • несколько новых примеров.

Если интересны подробности, то сюда.

Отдельная благодарность Алексею Сырникову, как за помощь в подготовке этого релиза, так и за работы по созданию зеркала SObjectizer на GitHub-е.

★★★★★
Ответ на: комментарий от anonymous

Вот это сейчас зачем было сказано? Какое отношение это имеет хотя бы к нужности обсуждаемого здесь инструмента?

eao197 ★★★★★
() автор топика
Ответ на: комментарий от eao197

если бы я нуждался в признании, то скорее всего не был бы анонимусом

anonymous
()

Может быть читателям темы будет интересно: вот здесь небольшая задачка, которая уже более-менее похоже на то, что приходилось делать на SObjectizer и для чего он предназначается. Там уже есть решение на Rust и C++/SObjectizer. Может быть со временем еще кто-то со своими решениями подтянется. Кстати, было бы интересно посмотреть варианты от местных умельцев, которые на словах знают и умеют чуть больше, чем все.

PS. На SObjectizer не точь-в-точь такие задачи решались, несколько пообъемнее, обычно. К тому же, в подавляющем большинстве случаев это были не вычислительные задачи, вроде подбора хеша или решения СЛАУ. Но смысл похожий — раздача заданий по агентам-исполнителям, реакция на результаты или какие-то проблемы и т.д., и т.п.

eao197 ★★★★★
() автор топика

В обсуждениях релизов SO-5 зачастую говорят о том, что сделано все сложно, коряво, непонятно, неправильно и т.д. Допустим, есть возможность все сделать с чистого листа, с нуля, сразу правильно и понятно. Как это должно выглядеть?

Если у кого-то есть мысли/идеи или просто хочется матерно выругаться, то вот специальная тема. Или же вот тут. Или же можно прямо здесь, чтобы далеко не ходить.

eao197 ★★★★★
() автор топика

Как-то в обсуждении SO-5 всплыла тема приоритетов сообщений. Мол, приоритеты нужны, без них плохо. В находящейся сейчас в разработке версии 5.5.5 есть возможность добавить поддержку оных. Что к чему, описано на SF.net и на GitHub-е. Если найдутся заинтересовавшиеся, то обсудить можно будет либо там, либо непосредственно здесь.

eao197 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.