12.10 定义一个Actor任务

    actor模式是一种最古老的也是最简单的并行和分布式计算解决方案。事实上,它天生的简单性是它如此受欢迎的重要原因之一。简单来讲,一个actor就是一个并发执行的任务,只是简单的执行发送给它的消息任务。响应这些消息时,它可能还会给其他actor发送更进一步的消息。actor之间的通信是单向和异步的。因此,消息发送者不知道消息是什么时候被发送,也不会接收到一个消息已被处理的回应或通知。

    结合使用一个线程和一个队列可以很容易的定义actor,例如:

    如果你放宽对于同步和异步消息发送的要求,类actor对象还可以通过生成器来简化定义。例如:

    actor模式的魅力就在于它的简单性。实际上,这里仅仅只有一个核心操作 .甚至,对于在基于actor系统中的“消息”的泛化概念可以已多种方式被扩展。例如,你可以以元组形式传递标签消息,让actor执行不同的操作,如下:

    最后,“发送”一个任务消息的概念可以被扩展到多进程甚至是大型分布式系统中去。例如,一个类actor对象的 方法可以被编程让它能在一个套接字连接上传输数据或通过某些消息中间件(比如AMQP、ZMQ等)来发送。

    原文: