Здравствуйте, B0FEE664, Вы писали:
BFE>До тех пор, пока в арифметике операций с указателями не ошибся.
А чего бы это. Если не нравятся указатели всегда можно перейти к handles(ухватам) они гарантированно могут быть валидированы в любой момент.
BFE>
Если применять патерны C на С++, то так и получается.
BFE>А вот если использовать нормальный патерн, вроде signal-slot или, там std::future / std::async / std::promise, то код будет выглядеть совсем иначе.
signal-slot как в qt забабахав предкомпиляцию, что бы весь треш спрятать под ковёр.
futute/promise никаких гарантий не дают и общаться с рабочим потоком прдётся через свои прослойки. Если можете показать как это элегантно сделать — покажите.
BFE>Вариант, как вариант, видал я и позабористей. А вот то, что хорош — нет: если GUIWindow умрет раньше Workers, то это "всё", "падаем".
нет. Тут как раз при убийстве GUIWindow вызывается done он посылает всем работникам сигнал отмены, и ждёт завершениея и диспетчиризирует остатки сообщений, при этом гарантировано если был вызван begin будет вызван end.
И все работники гарантировано освободят ресурсы, у них тоже довольно структурированный вид, и они не подозревают в каком потоке работают.
BFE>Известно как — запомнить указатель и вернуть его.
BFE>Хотите экономить на спичках, пишите в C стиле: без виртуальности и наследований.
Причем тут виртуальность и наследование. Просто в C++ нет единообразия, для разных сущностей всё делается по своему. Так и указатели на члены класса это отдельная песня.