Как написать программу wxRuby, которая будет просто рисовать текст и setPixel, не заходя в main_loop?

Я хочу написать программу, которая будет постоянно вычислять числа и рисовать на холсте окна, включая рисование текста и настройку пикселей. Таким образом, программа, вероятно, не может войти в цикл обработки событий (main_loop), потому что это остановит вычисление чисел.

  1. Есть ли способ просто нарисовать элементы без цикла событий?

  2. Или, должен ли быть создан поток, чтобы один поток выполнял вычисления, а другой обрабатывал цикл событий окна?

1 ответ

Общая стратегия для программ, основанных на событиях, которые должны выполнять длинные вычисления, является одной из следующих:

  1. разбейте вычисления на небольшие порции, которые занимают не более нескольких десятков миллисекунд, а затем запланируйте их выполнение один за другим, когда цикл событий простаивает. Помните: цикл обработки событий - это просто цикл, поэтому, если ваши длительные вычисления - просто огромный цикл сложного и быстрого кода, пусть цикл обработки событий будет вашим циклом.
  2. поместите длительный расчет в отдельный поток и попросите этот поток передать свои результаты основному потоку потокобезопасным способом
  3. поместите долгосрочные вычисления в отдельный процесс и отправьте обновления обратно в ваш основной процесс

Первый метод идеален, если вы можете им управлять. Мое личное предпочтение тогда идет к третьему методу. Следует избегать использования потоков IMO, если это вообще возможно, если только вы не занимаетесь программированием потоков (и даже тогда я обычно рекомендую отдельный процесс).

Другие вопросы по тегам