0

我想使用 Akka 在数据结构上实现多读/单写模式,但我陷入了角色模型的设计。

我最初的想法是有一个主管 Actor 来接收外部请求(读取或写入)。读取请求将被转发给读取器参与者以进行异步处理。写请求将等待所有读者完成,然后同步处理。

我的问题是如何实现“等待所有读者完成”部分。

我首先想到的是在主管那里设一个柜台。每次主管将消息转发给读者时,计数器都会增加。阅读器完成后会向主管发送一条“我完成了”的消息,这将减少计数器。但是,我认为这会导致死锁,因为“我完成了”消息将与外部请求发送到同一个邮箱。如果主管正在同步处理一个写请求,那么“我完成了”将永远不会到达它。

我真的被设计困住了。任何帮助,将不胜感激。

4

2 回答 2

0

根据上面的评论。

将队列添加到您的主管 Actor 以对传入请求进行排队。当读者发回完成的消息时,从队列中取出一个任务并将其交给读者。

于 2012-06-27T17:43:43.913 回答
0

这篇文章很旧,但它可能会对某人有所帮助。使用带有 Await 的Futures以及未来完成的位置(onComplete 或 onSuccess),处理写入操作。

于 2015-05-22T14:25:34.263 回答