LINUX.ORG.RU

SObjectizer-5.8.5

 , , , ,


0

4

Вышла очередная версия библиотеки SObjectizer.

Подробно об изменениях можно прочитать здесь: https://github.com/Stiffstream/sobjectizer/wiki/v.5.8.5

Если же кратко о главном, то:

  • у агента появился новый метод so_drop_all_subscriptions_and_filters;
  • новая опция skip_demands_on_dereg для более тонкой настройки агентов;
  • для mchain-ов появился empty_notificator;
  • в структуру so_5::stats::activity_stats_t добавлено новое поле, которое упрощает контроль за временем работы event-handler-ов.

В общем, всего пара новых небольших фич, но отраден сам факт того, что удалось найти время и ресурсы, чтобы воплотить их в жизнь. Т.е. проект живет и продолжает развиваться. В этом, собственно, и вся новость :)

Для тех, кто не знает меня и не слышал про этот проект, вкратце:

SObjectizer – это инструмент для упрощения разработки некоторых типов многопоточных приложений на C++. Основная идея в построении приложения из мелких сущностей-агентов (акторов), которые взаимодействуют между собой через обмен сообщениями, а SObjectizer берет на себя:

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

Подробнее о SObjectizer и о том, почему он такой, можно прочитать здесь.

ЗЫ. А еще в октябре SObjectizer-5 исполнилось пятнадцать лет 🥳


Сразу хочу извинится за созданный топик по такому минорному релизу. Я и сам бы предпочел обойтись без этого и, по традиции, добавил бы комментарий к старой теме. Но увы, та тема уже в архиве :( Так что прошу по этому поводу гнилыми помидорами в меня не кидаться :)

★★★★★

Последнее исправление: eao197 (всего исправлений: 1)
Ответ на: комментарий от ox55ff

Корутины будут запиливаться в проект для синхронных запросов?

Это пока открытый вопрос.

С одной стороны, я когда-то, года 3 или 4 назад, проштудировал инфо про короутины из C++20, но применять их на практике пока возможности не было, так что успел забыть даже то, что знал. Тут нужно восстановить в памяти что и как.

С другой стороны, если синхронный запрос делает агент внутри своего event-handler-а, то вряд ли здесь короутины помогут, т.к. event-handler занимает нить диспетчера и отдать эту нить кому-то еще проблематично.

А вот если сихронный запрос делается с нити, которая SO-5 не принадлежит (т.е. запрос делается не из SO-5 части приложения), то здесь, вероятно, какие-то варианты возможны.

Будем посмотреть.

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

если синхронный запрос делает агент внутри своего event-handler-а, то вряд ли здесь короутины помогут

Помогут. Корутина делает запрос (кладёт в очередь или mailbox или как там называется) и засыпает, поток возвращается диспетчеру. Когда результат будет готов, диспетчер пробуждает корутину на том месте где остановились. Будет работать даже на одном потоке.

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

Корутина делает запрос (кладёт в очередь или mailbox или как там называется) и засыпает, поток возвращается диспетчеру.

Я не настолько копенгаген в короутинах чтобы сейчас как-то это прокомментировать.

eao197 ★★★★★
() автор топика
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.