SObjectizer-5.5.8: обновился инструмент для работы с агентами в C++
От: so5team https://stiffstream.com
Дата: 02.09.15 05:24
Оценка: 4 (1)
SObjectizer — это небольшой фреймворк для упрощения разработки многопоточных приложений на C++ за счет организации асинхронного обмена сообщениями между объектами-агентами.

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

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

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


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

Краткую информацию о том, что такое SObjectizer можно найти здесь и далее по ссылкам.
Re: Про работу с таймерами
От: so5team https://stiffstream.com
Дата: 07.09.15 08:34
Оценка:
Мы подготовили рассказ о работе с таймерами (т.е. об использовании отложенных и периодических сообщений) в виде небольшой презентации (копия на slideshare).
Re: Несколько экземпляров SO Environment в одном процессе
От: so5team https://stiffstream.com
Дата: 19.09.15 08:57
Оценка:
Может быть кого-то из читателей темы заинтересует: вот здесь дано описание нового примера, который показывает, для чего может потребоваться создавать несколько экземпляров SO Environment внутри одного приложения, и как это может выглядеть.
Re: Вышла версия 5.5.9
От: so5team https://stiffstream.com
Дата: 29.10.15 06:48
Оценка:
SObjectizer обновился до версии 5.5.9. Вкратце изменения таковы:


Чуть подробнее об изменениях рассказывается в этой презентации или в этом посте. Полный список изменений можно найти в Wiki.

Так же сделаны две новые презентации, которые коротко рассказывают о таких возможностях SO-5.5, как синхронное взаимодействие агентов и лимиты для сообщений.

Версию 5.5.9 можно взять либо из секции Files на SF, либо из Svn-репозитория, либо из зеркала на GitHub (на GitHub-е теперь git submodules не используется, так что самую последнюю версию можно просто скачать с GitHub-а в виде архива и в ней сразу будут все необходимые подпроекты).
Re: В качестве пятничного трепа (смена code convention)
От: so5team https://stiffstream.com
Дата: 27.11.15 08:25
Оценка:
В обсуждениях SO-5 часто упоминалось, что у нас не удобный/понятный API. Есть желание сделать его удобнее и понятнее. Например, вот такой шаг был бы шагом в верном направлении?
Re: Механизм mchain
От: so5team https://stiffstream.com
Дата: 02.12.15 09:41
Оценка:
Вот какая штука готовиться к релизу в версии 5.5.13. Уже полностью работает, но окончательно не зафиксирована. Поэтому еще есть возможность что-то переделать, если вдруг обнаружатся какие-то фатальные недостатки.
Re: Вышла версия 5.5.13
От: so5team https://stiffstream.com
Дата: 10.12.15 13:50
Оценка:
SObjectizer обновился до версии 5.5.13. Подробности релиза можно узнать здесь. Сорри, что не выкладываю краткого описания изменений. Надеюсь, что тем, кто проектом интересуется, не составит труда пройти по ссылке и прочесть нормальное описание релиза.
Re: v.5.5.14, overload control через mchain и планы на ближайшее время...
От: so5team https://stiffstream.com
Дата: 18.12.15 08:43
Оценка:
За последнее время:


Плюс более-менее обозначились планы на ближайшее будущее:

Собственно говоря, если у кого-то есть вопросы/замечания/предложения, то сейчас удобный момент для того, чтобы уделить этому какое-то время. Так, если вам что-то не нравится в SO-5 или чего-то сильно не хватает и вы найдете возможность об этом сказать, то ваши пожелания вполне могут быть учтены в ближайших релизах SObjectizer-а.
Re: Иерархические конечные автоматы
От: so5team https://stiffstream.com
Дата: 25.12.15 13:41
Оценка:
Есть мысль расшить возможности агентов SO-5 так, чтобы они могли представлять из себя иерархические конечные автоматы. Вот здесь описано первое приближение к тому, как это могло бы выглядеть. Интересно было бы получить фидбек по поводу этой идеи.
Re[2]: Иерархические конечные автоматы
От: so5team https://stiffstream.com
Дата: 12.01.16 11:36
Оценка:
S>Есть мысль расшить возможности агентов SO-5 так, чтобы они могли представлять из себя иерархические конечные автоматы. Вот здесь описано первое приближение к тому, как это могло бы выглядеть. Интересно было бы получить фидбек по поводу этой идеи.

В SO-5.5.15 будет возможность задавать ограничение по времени пребывания агента в конкретном состоянии. А так же отменять это ограничения. Но не станет ли поведение связки методов time_limit/drop_time_limit неприятным сюрпризом для пользователей? Интересны любые мнения.
Состояния с историей
От: so5team https://stiffstream.com
Дата: 14.01.16 10:29
Оценка:
Маленькая демонстрация еще одной прикольной штуки, которая есть в продвинутых конечных автоматах -- состояния с историей.
Re: v.5.5.15: агенты подружились с иерархическими конечными
От: so5team https://stiffstream.com
Дата: 20.01.16 07:07
Оценка:
SObjectizer -- это небольшой фреймворк для упрощения разработки многопоточных приложений на C++11 за счет использования идей из моделей акторов и publish-subscribe. SObjectizer является OpenSource-проектом и распространяется под трехпунктной BSD-лицензией.

Этот релиз добавляет возможность создания агентов в виде иерархических конечных автоматов. В версии 5.5.15 поддерживаются такие вещи, как композитные состояния, shallow- и deep-история, обработчики входа/выхода, лимиты времени, передача события на обработку в другое состояние (что-то вроде defer) и подавление событий.

Малюсенький примерчик для демонстрации новых возможностей: агент, который реализует мигающий LED-индикатор. Этот агент обрабатывает сигнал `turn_on_off` для включения и выключения режима мигания. Когда режим мигания включен, агент зажигает LED-индикатор на 1.5 секунды, затем тушит его на 0.75 секунды, затем опять зажигает и опять тушит и так до тех пор, пока не получит следующий сигнал `turn_on_off`. В виде диаграммы состояний этот конечный автомат может быть представлен следующим образом:


Код этого агента может выглядеть вот так:

class blinking_led final : public so_5::agent_t
{
    state_t off{ this },
        blinking{ this },
        blink_on{ initial_substate_of{ blinking } },
        blink_off{ substate_of{ blinking } };

public :
    struct turn_on_off : public so_5::signal_t {};

    blinking_led( context_t ctx ) : so_5::agent_t{ ctx }
    {
        this >>= off;

        off.just_switch_to< turn_on_off >( blinking );

        blinking.just_switch_to< turn_on_off >( off );

        blink_on
            .on_enter( []{ /* some device-specific code */ } )
            .on_exit( []{ /* some device-specific code */ } )
            .time_limit( std::chrono::milliseconds{1500}, blink_off );

        blink_off
            .time_limit( std::chrono::milliseconds{750}, blink_on );
    }
};


Более подробно поддержка иерархических конечных автоматов описана в Wiki проекта: so-5.5 In-depth &mdash; Agent States и в обновленной презентации Dive into SObjectizer-5.5. Second Part: Agent's States

Взять версию 5.5.15 можно либо из раздела Files на SouceForge, либо из Svn репозитория, либо из зеркала на GitHub.
Отредактировано 20.01.2016 7:07 so5team . Предыдущая версия .
Re[2]: v.5.5.15: агенты подружились с иерархическими конечными
От: so5team https://stiffstream.com
Дата: 24.01.16 14:12
Оценка:
Обновилась серия презентаций Dive into SObjectizer-5.5, которая выполняет плавное погружение пользователя в возможности и особенности SObjectizer-а. Теперь все части описывают самую последнюю стабильную версию -- 5.5.15.

Серьезно была переработана самая первая часть, написанная почти год назад. Лишнее украшательство выброшено, примеры чуток упрощены. Вроде бы получилось более-менее неплохо -- основные моменты объяснены и показаны на очень простых примерах.

На данный момент в серию входит семь презентаций:

Еще парочка (про диспетчеры и mchain-ы), надеюсь, появится в ближайшие две-три недели.
Re: Список хотелок для v.5.5.16
От: so5team https://stiffstream.com
Дата: 03.02.16 11:16
Оценка:
Создана тема для сбора хотелок для следующей версии SObjectizer: Version 5.5.16 Wish List.

Предположительно, она будет выпущена в марте или в апреле 2016. Сроки выхода зависят от объема и сложности нововведений. А повлиять на этот объем/сложность можно оставив свою хотелку в обсуждении по ссылке или прямо здесь.
Re: Пример использования CSP-style concurrency
От: so5team https://stiffstream.com
Дата: 08.02.16 09:18
Оценка:
Еще один маленький примерчик возможностей SO-5.5: Конкурентный HelloWorld на Go и на C++.
Re: v.5.5.15.2 с поддержкой Android
От: so5team https://stiffstream.com
Дата: 11.02.16 10:06
Оценка: 21 (1)
Выпущена версия 5.5.15.2 с поддержкой Android-а (поддержка реализована на основе CrystaX NDK).
Re: Производительность SO-5 vs CAF
От: so5team https://stiffstream.com
Дата: 19.02.16 06:45
Оценка:
Мы провели сравнение производительности SO-5.5.15 и CAF-0.14.4. Вкратце результаты такие: операции создания/удаления агентов в SO-5 медленнее, отсылка и доставка сообщений в SO-5 быстрее.

Плюс объяснение, почему в SO-5 создание/удаление агентов обходится дороже, чем в других инструментах.
Re: SObjectizer-5.5.16 с улучшенными средствами работы с mchain
От: so5team https://stiffstream.com
Дата: 25.03.16 12:30
Оценка:
Вышла версия 5.5.16, основные изменения в которой связаны с развитием функционала mchain-ов (аналоги Go-ных каналов):


Плюс еще несколько изменений, полный список которых можно найти в Wiki проекта.

Некоторые из новых возможностей показаны в следующем простом примере. Три нити генерируют случайные числа и отсылают их в исходящий mchain. Основная нить посредством select вычитывает эти числа из трех каналов. Чтение прекращается когда все нити-генераторы закроют свои исходящие mchain-ы.
#include <so_5/all.hpp>

#include <iostream>
#include <random>

using namespace std;
using namespace std::chrono;
using namespace so_5;

void uint_generator(mchain_t ch, unsigned int values, unsigned int pause)
{
    // Chain must be closed at exit.
    auto ch_closer = auto_close_retain_content(ch);

    // Random numer generation stuff.
    default_random_engine rnd_dev;
    uniform_int_distribution<unsigned int> values_rnd{0, 256};
    uniform_int_distribution<unsigned int> pauses_rnd{5, pause};

    // Generation for random numbers with random pauses between them.
    for(unsigned int i = 0; i != values; ++i)
    {
        // New random value will be sent to output chain.
        send<unsigned int>(ch, values_rnd(rnd_dev));
        this_thread::sleep_for(milliseconds{pauses_rnd(rnd_dev)});
    }
}

void demo(environment_t & env)
{
    // Thread for random number generators.
    thread first, second, third;
    // All threads must be joined at exit.
    auto thr_joiner = auto_join(first, second, third);

    // Output chains for generators.
    auto ch1 = create_mchain(env);
    auto ch2 = create_mchain(env);
    auto ch3 = create_mchain(env);

    // Generator threads can be launched.
    first = thread{uint_generator, ch1, 20, 20};
    second = thread{uint_generator, ch2, 15, 25};
    third = thread{uint_generator, ch3, 10, 30};

    // Receive numbers from generators.
    select(from_all(),
        case_(ch1, [](unsigned int i) { cout << "first: " << i << endl; }),
        case_(ch2, [](unsigned int i) { cout << "second: " << i << endl; }),
        case_(ch3, [](unsigned int i) { cout << "third: " << i << endl; }));
}

int main()
{
    so_5::wrapped_env_t sobj;
    demo(sobj.environment());
}


Версия 5.5.16 может быть загружена из раздела Files на SourceForge или же она может быть взята как из Svn-репозитория, так и с GitHub-а.
Re[2]: SObjectizer-5.5.16 с улучшенными средствами работы с mchain
От: so5team https://stiffstream.com
Дата: 30.03.16 12:26
Оценка:
Пара свежих игрушечных примеров, в которых используются возможности SO-5.5.16.
Re: Вышла версия 5.5.16.1
От: so5team https://stiffstream.com
Дата: 23.05.16 07:50
Оценка:
Свеженький релиз. С исправлениями парочки ошибок, найденных за последнее время.

Но главное не в этом. Главное в том, что минимальной необходимой для SO-5.5 версией GCC теперь является 4.8, а не 4.9, как в предыдущих версиях. И совместимость с GCC-4.8 будет поддерживаться в ближайшие три года. До окончания времени жизни Ubuntu 14.04 LTS.

Версия 5.5.16 может быть загружена из раздела Files на SourceForge или же она может быть взята как из Svn-репозитория, так и с GitHub-а.
Отредактировано 23.05.2016 7:54 so5team . Предыдущая версия .
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.