Я работаю над кроссплатформенным настольным приложением с графическим интерфейсом, написанным на Ruby.Приложение будет использовать MacRuby для предоставления графического интерфейса в Mac OS X и будет использовать Qt для графического интерфейса на других платформах.Приложение представляет собой мультимедийный инструмент, который позволяет выполнять такие операции, как копирование компакт-дисков или DVD-дисков и их кодирование в различные форматы, или перекодирование мультимедийных файлов из одного формата в другой.
Эти задачи занимают много времени и поэтому должны выполнятьсяв фоновом режиме, чтобы не заморозить графический интерфейс во время их выполнения.Кроме того, фоновые задания должны иметь возможность отменяться и / или приостанавливаться, а также иметь возможность сообщать о состоянии и ходе выполнения в графический интерфейс.Также может потребоваться назначить приоритеты заданиям, чтобы задания с более высоким приоритетом выполнялись раньше заданий с более низким приоритетом, а также иметь зависимости между заданиями, чтобы задание не начало выполняться, пока не будут завершены все его зависимости.
Мой вопрос: какие инструменты или методы лучше всего подходят для обработки подобных заданий в фоновом графическом интерфейсе / настольном приложении Ruby?Я бы предпочел не «свернуть свой» диспетчер заданий, чтобы порождать процессы или потоки и управлять запуском и остановкой заданий и т. Д.
Редактировать: после публикации этого вопроса я понял, что задал очень похожий вопросдля решения C ++ некоторое время назад.Мои требования к этому решению на Ruby такие же, как те, что я опубликовал для решения C ++ здесь: C ++ master / worker