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).
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: Слайды доклада о модели акторов и C++ с CoreHard С++ Autumn 2016
От: so5team https://stiffstream.com
Дата: 23.10.16 07:59
Оценка: 4 (1)
Если кому-то интересно, то вот слайды доклада "Модель Акторов и С++: что, зачем и как?" в прошедшей вчера в Минске конференции CoreHard C++ Autumn 2016. В докладе речь идет не только, и не столько про SObjectizer, сколько про достоинства Модели Акторов, современные популярные инструменты с ее реализацией, в том числе и про несколько готовых инструментов для C++ (QP/C++, Just::Thread Pro, CAF, SObjectizer).
Re: Версия 5.5.18
От: so5team https://stiffstream.com
Дата: 29.09.16 09:08
Оценка: 2 (1)
Выкатили релиз версии 5.5.18

Основные изменения касаются системы рантайм-мониторинга потрохов SObjectizer. Появилась возможность отслеживать активности рабочих нитей (сколько событий было обработано, сколько времени на это было потрачено, сколько времени ушло на ожидание событий). Новые сообщения distribution_started и distribution_finished для упрощения обработки мониторинговой информации. Возможность задавать глобальные lock_factories. Плюс более жесткий контроль за поведением SObjectizer-а в некоторых крайних случаях (попытки сделать вложенный вызов so_change_state, попытка доставки отложенных/периодических сообщений в mchain-ы, который могут быть переполненными). Более подробно все это описано в Wiki проекта.

Отдельная благодарность Андрею Углику за помощь в подготовке релиза.

Взять версию 5.5.18 можно либо из раздела Files на SouceForge, либо из Svn репозитория, либо из зеркала на GitHub.

Так же за последнее время появилась серия статей с рассказом о SObjectizer: SObjectizer: что это, для чего это и почему это выглядит именно так?, От простого к сложному Часть I, Часть II, Часть III, Акторы в виде конечных автоматов -- это плохо или хорошо?, Проблема перегрузки агентов и средства борьбы с ней.
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: Производительность 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 . Предыдущая версия .
Re: v.5.5.17 с поддержкой сборки в виде статической библиотеки
От: so5team https://stiffstream.com
Дата: 16.06.16 10:50
Оценка:
Выкатили релиз версии 5.5.17.

Основная фича -- это возможность сборки SO-5 в виде статической библиотеки. Плюс несколько мелких улучшений в работе с mchain-ами:

Расширение возможностей по run-time мониторингу решили отложить до версии 5.5.18, т.к. для их реализации потребуется больше времени, чем предполагалось.

Взять версию 5.5.17 можно либо из раздела Files на SouceForge, либо из Svn репозитория, либо из зеркала на GitHub.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.