tim*_*one 44 design-patterns actor
我正在做一些客观的C/iOS开发,并听过几个对Actor模式的引用.在Big Nerd Ranch的书中,它说:
当您有一个长时间运行的任务和一些需要在完成后执行的代码时,将使用一个actor对象.这种对象被赋予执行任务所需的信息以及在该任务完成时执行的回调.actor在没有任何进一步输入的情况下在自己的线程上运行,并在完成时被销毁.
这里的演员与网络电话一起使用.这是演员主要使用的方式吗?是否与代表团相互排斥或互补?Actor的定义似乎非常广泛,我试图更好地处理它的含义.此外,是否可以在非OO环境中拥有Actor?
Dan*_*sky 60
对Actor的定义实际上似乎有点限制.它肯定不会处理Erlang风格的演员(或者我相信Scala风格的演员).根据我的经验,演员是这样的:
但从根本上说,actor是一个自由运行的代码块,可以从其环境接收消息,并可以将消息发送回其环境.
只要您需要大量(和大量)有状态的小进程,就可以使用Actor.网络是一种常见的用例,因为您不希望为每个连接分配整个线程.你想要一些更轻量级的东西,所以你为每个连接分配一个actor,然后在一个较小的线程池上安排actor.但网络肯定不是演员的唯一用途.
在Erlang中,演员是一个功能.该函数可能尾部调用自身(因此它基本上是一个无限循环),并且它可能有一种干净的自终止方式(无限循环具有"中断"条件).循环通常等待来自系统的消息,处理它,然后将消息发送到系统的其余部分.Erlang OTP库有一些抽象,甚至不需要编写循环,所以OTP actor被实现为一组回调.通过这种方式,OTP演员看起来很像一个对象.