基于演员的开发 - 实施问题

时间:2009-11-26 12:30:32

标签: multithreading queue actor

这是我在这里发表的第一条消息,我很高兴加入这个社区。

看起来现在一切都在进行多线程开发。大鱼说它不会花费更长的时间来达到数百个核心。

我最近读到了基于actor的开发以及处理并发编程的消息传递的精彩程度。另外,我还读到它们可以作为方法调用的方式实现。在这种情况下,给定对象也是一个actor。

换句话说,我们不再任意调用方法。他们在队列中进行后期处理。然后,队列确保不会同时修改对象的状态(var),因为消息都是序列化的。

我知道这个模型很容易实现(至少是一个实验模型),也许这就是为什么找到任何技术细节太难了。

我的问题涉及队列。这是多生产者和一个消费者的典型案例,我怀疑他们需要某种同步。真的吗?会有另一种解决方案吗?我听说它们可以实现为无锁结构。

我不太确定。任何评论将不胜感激。

祝你有个美好的一天

2 个答案:

答案 0 :(得分:1)

多个生产者和单个消费者是使用Actors的一个很好的方案,并且不需要任何同步。在Scala中,使用Actors时通常不使用任何可变状态。您只需发送一份数据需要处理的副本。

您可以在线免费阅读有关Scala in "Programming Scala"中演员的更多信息。

答案 1 :(得分:0)

如果我理解正确,代理收到MailBox中的消息,其行为类似于并发队列。所以你不必关心它。如果您想直接使用邮箱,可以从伟大的“繁忙的Java开发人员Scala指南”系列中查看此nice article