Как написать программу wxRuby, которая будет просто рисовать текст и setPixel, не заходя в main_loop? - PullRequest
0 голосов
/ 02 августа 2010

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

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

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

1 Ответ

0 голосов
/ 20 августа 2010

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

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

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

...