0

我需要有 2 个(或者可能是 3 个)在 Ruby 中连续运行程序的“方面”——一个通信线程、一个渲染线程,也许还有一个缓存线程。

这个想法是渲染线程显示幻灯片(其定义是从文件中读取的),并且所有幻灯片都由通信线程从远程 HTTP 服务器检索。渲染必须连续且不间断(因此可能需要缓存)。该文件可能会在程序的生命周期中发生变化,因此需要重新解析(动态)。

我想在“方面”之间发送消息,例如当通信线程获取节目的整个“章节”时,渲染线程可以在等待整个节目下载之前启动,等等。

我应该使用 Ruby 线程还是 DRb?如何在线程之间传递消息?

感谢您的任何反馈!

4

1 回答 1

2

保持简单开始 - 始终是最好的建议。从两个线程开始,看看性能是否是您需要的。您可以使用条件变量或简单的互斥锁来围绕检索到的章节列表进行同步。您可能会遇到欠载的问题 - 没有可用于渲染的章节,但您至少会使用核心 Ruby 获得可行解决方案的基本内容。

然后一定要考虑提供其他可能性的解决方案。除了 DRb,您还应该查看 EventMachine(阅读章节时可能需要的异步功能)和 RabbitMQ,了解消息系统提供的更通用和更松散的耦合。

从小处着手,不要尝试过快。对于任何关心 Ruby 线程的人,我正在运行一个小型报表呈现客户端,该客户端正在侦听 RabbitMQ 队列。客户端使用四个线程来渲染(google)图表、发送警报和自动重置各种队列(在收集了几个小时的数据之后)。一切都很好!

克里斯

于 2009-08-28T11:54:15.453 回答