我正在开发一个跨平台的GUI桌面应用程序,用Ruby编写。该应用程序将使用MacRuby在Mac上提供图形用户界面,并将在其他平台上使用Qt作为图形用户界面。该应用程序是一种多媒体工具,可以实现翻录CD或DVD并将其编码为各种格式,或将多媒体文件从一种格式转换为另一种格式。
这些任务非常耗时,因此必须在后台运行,以免在执行时冻结GUI。此外,后台作业应该能够被取消和/或暂停,并且能够向GUI报告状态和进度。还可能需要为作业分配优先级,以便较高优先级的作业在较低优先级的作业之前运行,并且还需要在作业之间具有依赖性,以便作业在其所有依赖性完成之前不会开始执行。
我的问题是:在Ruby GUI/桌面应用程序中,什么工具或技术最适合处理这类后台作业?我不希望“滚动我自己的”作业管理器来产生进程或线程,以及管理作业的启动和停止等。
编辑:在发布了这个问题后,我意识到不久前我在C++解决方案中也问过一个非常类似的问题。我对这个Ruby解决方案的需求与我在这里发布的C++解决方案的需求是一样的:C++ master/worker
发布于 2011-09-09 10:52:00
不幸的是,我遇到的大多数Ruby后台任务运行器都是为Rails设计的。
这可能比您期望的要低一点,但是EventMachine会出现在脑海中。如果您准备编写自己的高级Job/Dependency代码,则可以使用EM为其提供支持,并处理线程(或forking,如果您愿意)的繁琐工作。不确定是否要暂停...
我建议查看EventMachine::Deferrable和EventMachine::DeferrableChildProcess,看看它们是否可以工作。
发布于 2011-09-09 13:09:44
我最近使用resque在ruby项目中做后台工作。
https://stackoverflow.com/questions/7352600
复制相似问题