Войти
ПрограммированиеФорумОбщее

Простая система событий на С++11 (комментарии) (4 стр)

Страницы: 1 2 3 4 5 6 7 Следующая »
#45
18:09, 10 дек 2015

Hybernaculum
> Не надо прикрывать "асинхронностью" свою некомпетентность.

Вы бы аккуратнее словами разбрасывались.  Если у вас плохо со зрением, то я в статье упоминал что это ЛИШЬ ПРИМЕР, и планируется расширять до RPC.
О какой некомпетентности идет речь?  Если вам надо получать результат - это всего лишь дополнительный параметр шаблона, и все.

Hybernaculum
> Это ваши слова.

А как мне понимать абстрактный высер типа
> 3. Много лишних сущностей, выделений памяти и синтаксического мусора

Hybernaculum
> В большинстве реальных задач желательно иметь возможность получать ответ от подписчика.

В моих РЕАЛЬНЫХ задачах такой потребности нет.  Если в ваших есть - добавьте, код под PD.
Не нравится код - пишите свой, ради бога.


И перестаньте скатываться на личности, как минимум это непрофессионально, как максимум - попахивает школоло.

#46
18:10, 10 дек 2015

0r@ngE
Расскажешь как подписать на одно событие два подписчика?

понял задумку

#47
18:37, 10 дек 2015

в общем не благодари

+ Показать
#48
18:39, 10 дек 2015

0r@ngE
> как мне понимать
Как написано, так и понимать и не надо ничего выдумывать.

> И перестаньте скатываться на личности
Где вы видели чтобы я обращался к вам как к личности? :)

> В моих РЕАЛЬНЫХ задачах такой потребности нет.
Вы запостили статью и код на ГД.ру, то есть для всех, поэтому будьте добры
адекватно воспринимать и реагировать на конструктивную критику.

> Не нравится код - пишите свой, ради бога.
Вы слишком высокого мнения о своём коде, если думаете что я собираюсь его где-то использовать.

#49
19:42, 10 дек 2015

cNoNim

Что хуже - множественное наследование или 200 строк кода на шаблонах и дефайнах ? :)

#50
19:57, 10 дек 2015

innuendo
а при множественном наследовании сколько строк кода?

#51
19:58, 10 дек 2015

cNoNim
> понял задумку
;)

cNoNim
> в общем не благодари
Интересная мысль, спасибо, вечером проверю.
Хоть кто-то с конструктивом, что радует ;)

Hybernaculum
> Вы запостили статью и код на ГД.ру, то есть для всех, поэтому будьте добры
> адекватно воспринимать и реагировать на конструктивную критику.
На критику, особенно конструктивную я всегда только положительно реагирую.
Но то что пишете вы - это не конструктив, а непонятные мне попытки докопаться до автора. (см. ниже)

Hybernaculum
> Вы слишком высокого мнения о своём коде, если думаете что я собираюсь его где-то использовать.
Да ради бога, мне то что.  Я же никому не навязываю, написал и написал статью, авось кому пригодится.
И тут прибегаете вы, весь такой в лучах солнца и начинаете мне рассказывать что это ва не в бок не впилось,
что автор некомпетентен ибо вам лично такой подход к решению задачи не нравится и т.д.
Успокойтесь, выдохните, выпейте водички и пишите дальше свой код.
Судя по вашим постам - вы постоянно пытаетесь кому-то что-то доказать. Технических постов не вижу. Ваше право.
Когда будете готовы к конструктиву - возвращайтесь, с удовольствием обсужу.

#52
20:19, 10 дек 2015

0r@ngE
та я еще не закончил конструктив...
просто важно что бы ты по этапно все понимал )

+ Показать
#53
20:23, 10 дек 2015

ну и все расходимся

+ Показать
#54
20:31, 10 дек 2015

0r@ngE
> На критику, особенно конструктивную я всегда только положительно реагирую.
Что-то незаметно.
Судя по вашим ответам в теме, в том числе и на мою критику, у вас нет ни малейшего желания
что-то менять, добавлять или улучшать в своём, как вы выразились, говнокоде.

> начинаете мне рассказывать что это ва не в бок не впилось
Опять у вас фантазия разыгралась?

> Когда будете готовы к конструктиву
Это вам нужно быть готовым к конструктиву, это ведь ваша статья и ваш,
как вы выразились, "говнокод", которые вы вынесли на обсуждение.

> попытки докопаться до автора
Где вы здесь увидели попытки "докопаться до автора" ?

Неудобная система, как минимум по 3 причинам:
1. Перед удалением объекта требуется вручную отписывать все его функции, ранее подписанные на события
2. Нет возможности подписывать функции, которые возвращают значение (порой важно знать, обработал ли объект событие или нет, например в иерархии GUI объектов)
3. Много лишних сущностей, выделений памяти и синтаксического мусора

Всё исключительно конструктивно и по делу.

innuendo
> множественное наследование
Вот это правильное пиво! :)

#55
21:10, 10 дек 2015

cNoNim
> ну и все расходимся
Если все локально используется - то да, можно расходиться.

Я же уже писал ранее (да и в самой статье тоже), даже специально не удалял из кода EventTrait  ParamsTuple.
Использовать планируется для передачи ивентов по сети. В ParamsTuple захватываются передаваемые параметры, и все это отправляется другому клиенту, где читается,
и благодаря хешу - EventSystem сможет пришедший ивент бросить.

Из невошедшего в код и пример -  deferred events - те что с таймером (хотя я он них вроде уже упоминал).
Т.е. у EventSystem теперь есть Update, и ивенты бросаются если подошло их время.

#56
21:27, 10 дек 2015

cNoNim
> ну и все расходимся
Создавать на каждый уникальный эвент свою unordered_map, да ещё и статически (превед проблемам с кастомными
аллокаторами и порядком уничтожения статических объектов) - это как-то не спортивно, а если эвентов много...

#57
21:55, 10 дек 2015

Hybernaculum
т.е. ты только сейчас понял о чем код в статье?
unordered_map / list  оно там не принципиально, я его вставил только для того что бы убрать этот говнокод с remove_if
не более...
а все остальные вопросы можешь адресовать автору )

#58
21:59, 10 дек 2015

0r@ngE
мы можем долго обсуждать, тот код которого в статье нет, но в данный момент это не так интересно
или ты думаешь мне больше нечего сказать по тому коду который есть? )
эт зря

    template <typename EventTrait>
    void RegisterEvent() {
        const std::size_t eventHash = get_event_trait_hash<EventTrait>();
        m_Events[eventHash] = std::make_unique<SpecEvent<EventTrait>>();
    }
template <typename T> inline std::size_t get_event_trait_hash() {
    static std::size_t result = 0;
    if (!result) {
        const char* traitName = get_event_trait_name<T>();
        std::hash<std::string> hasher;
        result = hasher(traitName);     // TODO: replace this with something platform-independent
    }
    return result;
}

тебе ни чего не говорит словосочетание hash collision?

#59
22:06, 10 дек 2015

ладно не могу удержаться
> и благодаря хешу - EventSystem сможет пришедший ивент бросить.
> 3) Нет. Внутри get_event_trait_hash - static результат. Т.е. вычислен он будет лишь раз и затем будет отдан каждый вызов уже готовый. Если юзается GCC можно еще немного оптимизировать заюзав __builtin_expect
Изображение

Страницы: 1 2 3 4 5 6 7 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.