На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Сколько хэлоу-ворлдов ни пиши - императором не станешь!
    Буэнос диас, амигос!

    Ну не дает мне спокою это ЯП Rust. Я уже и к батюшке ходил исповедоваться, и на пост ел только обезжиренную мраморную говядину (с почти просроченными трюфелями). Но не отпускает, окоянный!!! :'(
    И я вот подумал ... если не отпускает меня сие мракобесие, может это и не мракобесие совсем?! Может это Промысел Божей, который я возглавить должен, с божею помостчью? :scratch:

    Собственно простые православные вопросы

    user posted image

    Хочу начать писать на Rust свой кросс-платформенный GUI-велик. Чисто для тренировки в начале, ну а потом - как карта ляжет. Нужны советы!!! Где-то "как сделать", а где-то "я вот прЕдумал, покритикуйте и покажите как лучче".

    Изначальная реализация GUI-потока

    На сколько я видел - везде "классика". В обязанности GUI-потока (основного потока программы) входят две весчти: 1) Обработка событий 2) Перерисовка. Прекрасно. Но кто из вас не видел "зависание" UI когда кодер дерзко предполагает "это отработает за пол-секунды", а по факту пять, или вааще уосемь!!! Хочу разнести это на два потока: 1) Чисто обработка событий (со стеком накопления) 2) поток-рисователь. Предполагаю "да" для встраиваемых систем в кофемолки и тостеры моя система не прокатит. Или "да". Прошу ваших комментов. Тут принципиально "блокировать UI или нет на время проведения долгой операции". Отдельный пункт - "Cancel". Можно только его разрешать, а остальное блокировать. Ваши мысли?

    Чем изначально лучше всего управлять потоками, и какую модель управления потоками выбрать

    На второй вопрос сразу напрашивается ответ - POSIX. Но мы же не используем напрямую, мы же пишем обертку. У Уиндовс тоже интересная концепция потоков. Что взять за "базис".

    На последок - вишенка!

    Как избавиться от С++ ООП мышления и перейти на Rust "без акцента"? :wall: :wall: :wall: Лечение током не предлагать - я и сам такое предлагать горазд!!! :lol:
      Цитата Majestio @
      Изначальная реализация GUI-потока

      Вопрос, конечно, интересный. Только причём тут Rust ?
      Вопрос о загрузке главного потока - это Вопрос.
      ---
      Да, делал я рисование в рабочем потоке. Это действительно позволяет
      гарантировано убрать видео-эффекты при рисовании.
      Таким образом, задачей главного потока остаётся только вывод картинки,
      а рисование делает рабочий поток.
      По измерениям комп даже 10-15 летней выдержки на самый большой монитор
      выводит картинку за время <=1 [мс], что исключает любые видео-эффекты.
      А рисование в другом ("графическом") потоке при этом может занимать любое время.
      Ещё более старый комп тоже не особо отстает. Просто у него дисплей поменьше.
      Но всё равно приятно.
      ---
      Графический поток должен реагировать на 3 разных события, поступающие посредством очередей:
      1) Новые данные
      2) Изменился размер окна
      3) Изменились графические параметры - цветА, фонты, линии, число гафиков итд.
      Всё то, что можно определить как "форма представления".
      А генерировать графический поток должен одно событие.
      Тоже посредством очереди, посылая нарисованный образ главному потоку.
      (Или указатель на результат)

      как то так.
      Это действительно хорошо и удобно работает. Доволен как слон.
        Цитата ЫукпШ @
        Вопрос, конечно, интересный. Только причём тут Rust ?

        Просто хочется как-то начать изучать Раст, для это нужно начать делать что-то дельное. Ну я GUI и выбрал.
        1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0182 ]   [ 14 queries used ]   [ Generated: 27.09.22, 17:35 GMT ]