演员:如何有效地处理读取数据

Ada*_*ung 5 scala actor akka

假设我有一个拥有单个字段的actor.每100封给一个演员的消息中有99个读取该值,而第100个消息更新该值.在这种情况下,我想并行处理读取.换句话说,如何使用Actors实现读/写锁的性能?这与Scala标准演员或Akka一样实用吗?或者我错过了演员的观点:)

更新:修复了令人困惑的语言,抱歉

Eri*_*cht 6

你很可能错过了演员的观点.我假设您想要一个发送查询的actor,然后它会发回一个响应.有很多机器涉及向演员发送消息,处理消息并发送回复.响应消息的实际生成将作为任务创建并提交给线程池.在消息队列和线程池之间有多个需要锁定或最佳CAS操作的位置.通常关键是演员将在基于该消息的单独线程中做一些工作.

如果您只想阅读并且很少写数据(例如递增计数器或访问映射中的值),那么使用java.util.concurrent中的相应类会更好.


Vik*_*ang 6

[免责声明:我是Akka的PO]

我建议使用代理,读取可以在任何时候完成,但一次只能写一次.

http://doc.akkasource.org/agents-scala

编辑:http://doc.akka.io/docs/akka/2.1.0/scala/agents.html(试试这个链接)