
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.86] |
![]() |
|
Сообщ.
#1
,
|
|
|
Буэнос диас, амигос!
Ну не дает мне спокою это ЯП Rust. Я уже и к батюшке ходил исповедоваться, и на пост ел только обезжиренную мраморную говядину (с почти просроченными трюфелями). Но не отпускает, окоянный!!! ![]() И я вот подумал ... если не отпускает меня сие мракобесие, может это и не мракобесие совсем?! Может это Промысел Божей, который я возглавить должен, с божею помостчью? ![]() Собственно простые православные вопросы ![]() Хочу начать писать на Rust свой кросс-платформенный GUI-велик. Чисто для тренировки в начале, ну а потом - как карта ляжет. Нужны советы!!! Где-то "как сделать", а где-то "я вот прЕдумал, покритикуйте и покажите как лучче". Изначальная реализация GUI-потока На сколько я видел - везде "классика". В обязанности GUI-потока (основного потока программы) входят две весчти: 1) Обработка событий 2) Перерисовка. Прекрасно. Но кто из вас не видел "зависание" UI когда кодер дерзко предполагает "это отработает за пол-секунды", а по факту пять, или вааще уосемь!!! Хочу разнести это на два потока: 1) Чисто обработка событий (со стеком накопления) 2) поток-рисователь. Предполагаю "да" для встраиваемых систем в кофемолки и тостеры моя система не прокатит. Или "да". Прошу ваших комментов. Тут принципиально "блокировать UI или нет на время проведения долгой операции". Отдельный пункт - "Cancel". Можно только его разрешать, а остальное блокировать. Ваши мысли? Чем изначально лучше всего управлять потоками, и какую модель управления потоками выбрать На второй вопрос сразу напрашивается ответ - POSIX. Но мы же не используем напрямую, мы же пишем обертку. У Уиндовс тоже интересная концепция потоков. Что взять за "базис". На последок - вишенка! Как избавиться от С++ ООП мышления и перейти на Rust "без акцента"? ![]() ![]() ![]() ![]() |
Сообщ.
#2
,
|
|
|
Цитата Majestio @ Изначальная реализация GUI-потока Вопрос, конечно, интересный. Только причём тут Rust ? Вопрос о загрузке главного потока - это Вопрос. --- Да, делал я рисование в рабочем потоке. Это действительно позволяет гарантировано убрать видео-эффекты при рисовании. Таким образом, задачей главного потока остаётся только вывод картинки, а рисование делает рабочий поток. По измерениям комп даже 10-15 летней выдержки на самый большой монитор выводит картинку за время <=1 [мс], что исключает любые видео-эффекты. А рисование в другом ("графическом") потоке при этом может занимать любое время. Ещё более старый комп тоже не особо отстает. Просто у него дисплей поменьше. Но всё равно приятно. --- Графический поток должен реагировать на 3 разных события, поступающие посредством очередей: 1) Новые данные 2) Изменился размер окна 3) Изменились графические параметры - цветА, фонты, линии, число гафиков итд. Всё то, что можно определить как "форма представления". А генерировать графический поток должен одно событие. Тоже посредством очереди, посылая нарисованный образ главному потоку. (Или указатель на результат) как то так. Это действительно хорошо и удобно работает. Доволен как слон. |
Сообщ.
#3
,
|
|
|
Цитата ЫукпШ @ Вопрос, конечно, интересный. Только причём тут Rust ? Просто хочется как-то начать изучать Раст, для это нужно начать делать что-то дельное. Ну я GUI и выбрал. |