Re[9]: Как такое написать по Сиплюсплюсному?
От: B0FEE664  
Дата: 24.03.25 18:12
Оценка: -1 :)
Здравствуйте, kov_serg, Вы писали:

BFE>> Если применять патерны C на С++, то так и получается.

BFE>>А вот если использовать нормальный патерн, вроде signal-slot или, там std::future / std::async / std::promise, то код будет выглядеть совсем иначе.
_>signal-slot как в qt забабахав предкомпиляцию, что бы весь треш спрятать под ковёр.
Не надо как в Qt. Qt отягощён своим наследием и к использованию совсем не обязателен. На современном C++ патерн signal-slot пишется за пару дней, если не заворачиваться со скоростью.

_>futute/promise никаких гарантий не дают и общаться с рабочим потоком прдётся через свои прослойки. Если можете показать как это элегантно сделать — покажите.

Да, через свои прослойки.

BFE>>Вариант, как вариант, видал я и позабористей. А вот то, что хорош — нет: если GUIWindow умрет раньше Workers, то это "всё", "падаем".

_>нет. Тут как раз при убийстве GUIWindow вызывается done он посылает всем работникам сигнал отмены,...
Из кода не видно, что это делается автоматически (например в деструкторе workers done() вызваться не может (т.е. может, но приведёт к падению)), так что скорее всего руками, а значит можно забыть прописать...

_>И все работники гарантировано освободят ресурсы, у них тоже довольно структурированный вид, и они не подозревают в каком потоке работают.

Что означает, что работники не могут одновременно работать на несколько окон.

_>Просто в C++ нет единообразия, для разных сущностей всё делается по своему.

Без микроменеджмента эффективности не будет. Где всё единообразно, там медленно.
И каждый день — без права на ошибку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.