【发布时间】:2009-08-03 20:05:35
【问题描述】:
让演员睡觉的最佳方式是什么?我将参与者设置为想要维护数据库的不同部分(包括从外部来源获取数据)的代理。出于多种原因(包括不使数据库或通信超载和一般负载问题),我希望参与者在每个操作之间休眠。我正在查看大约 10 个演员对象。
actor 将无限运行,因为总会有新数据进入,或者坐在表中等待传播到数据库的其他部分等。我们的想法是让数据库尽可能完整在任何时间点。
我可以使用无限循环来执行此操作,并在每个循环结束时休眠,但根据http://www.scala-lang.org/node/242,演员使用线程池,只要所有线程都被阻塞,就会扩展该线程池。因此,我认为每个参与者中的 Thread.sleep 都是一个坏主意,因为这会不必要地浪费线程。
也许我可以有一个有自己的循环的中心参与者,它在时钟上向订阅者发送消息(如异步事件时钟观察者)?
有没有人做过类似的事情或有什么建议?很抱歉提供额外(可能是多余的)信息。
干杯
乔
【问题讨论】: