Actor模型优于基于任务的异步模式

时间:2019-05-05 18:10:46

标签: c# async-await akka.net actor-model

参与者模型是一种可以更好地利用CPU资源的方法。同样,使用C#的async / await进行编程也可以帮助程序员正确使用线程,因为在进行某些IO调用时不会阻塞线程,然后可以将其用于处理另一个请求。

尽管具有位置透明性和容错性之类的功能,但使用Akka.NET实现的参与者模型相对于.NET环境中实现的基于任务的异步模式有何优势?

1 个答案:

答案 0 :(得分:2)

  

参与者模型是一种可以更好地利用CPU资源的方法。

我从来没有那样想过。对我而言,参与者模型的好处在于将代码分解为易于理解的小动作,并将其与消息联系起来。对设计的影响才是真正的好处。

  

与在.NET环境中实现的基于任务的异步模式相比,使用Akka.NET实现的参与者模型有什么优势?

这两个是正交的,因此比较它们是没有意义的。

尤其是,Akka.NET支持使用async。您可以选择直接使用await,在这种情况下,只有完成async的接收之后,消息处理才被认为是完整的;或者,您也可以通过管道将任务的结果发送给自己,在这种情况下,消息处理被视为完成,并且带有异步操作结果的 new 消息会到达。