“并发是一种解耦策略” —— Robert C.Martin
何为Actor模式呢?
在计算机科学中,参与者模式(Actor model)是一种并发运算上的模型。“参与者”是一种程序上的抽象概念,被视为并发运算的基本单元:当一个参与者接收到一则消息,它可以做出一些决策、创建更多的参与者、发送更多的消息、决定要如何回答接下来的消息。
这段话很全面,但也需要我们花时间来消化与理解。不妨先试着阅读以下这段Python代码实现,再分析理解。
from queue import Queue
from threading import Thread
class ActorExit(Exception):
pass
class Actor(object):
def __init__(self):
self._thread = Thread()
self._queue = Queue()
def send(self, msg):
self._queue.put(msg)
def receive(self):
msg = self._queue.get()
if msg is ActorExit:
raise ActorExit()
return msg
def stop(self):
if self._thread.is_alive():
self.send(ActorExit)
def start(self):
if not self._thread.is_alive():
self._thread = Thread(target=self.