我注意到了两种“消息传递”方法。一个我见过Erlang使用,另一个来自Stackless Python。据我所知,这里的区别阻塞通道vs异步消息传递
厄兰风格 - 邮件发送和排队到接收进程的邮箱。从那里他们在先进先出的基础上被删除。一旦第一个进程发送消息,就可以继续进行。
Python风格 - 进程A排队等待发送到进程B. B当前正在执行一些其他操作,所以A被冻结,直到B准备好接收。一旦B打开读取通道,A发送数据,然后它们都继续。
现在我看到Erlang方法的优点是你没有任何被阻塞的进程。如果B永远不能接收,A仍然可以继续。但是我注意到在我写的一些程序中,由于消息的流入量大于流出量,Erlang消息框可能会充满数百(或数千)个消息。
现在我还没有在框架/语言中编写大型程序,所以我想知道你的经验与此有关,如果这是我应该担心的。
是的,我知道这是抽象的,但我也在寻找相当抽象的答案。