我注意到了两种“消息传递”方法,一种是Erlang使用的,另一种是Stackless Python使用的。据我所知,它们的区别如下:
Erlang 的方式 - 消息被发送并排队到接收进程的邮箱中。然后,它们按照先进先出(FIFO)的顺序被移除。一旦第一个进程发送了消息,它就可以继续执行。
Python 的方式 - 进程 A 排队等待向进程 B 发送消息。B 正在执行其他操作,因此 A 被冻结,直到 B 准备好接收消息。一旦 B 打开了读通道,A 发送数据,然后两者都继续执行。
现在,我认为 Erlang 的优点在于它没有任何被阻塞的进程。如果 B 从未能够接收,则 A 仍然可以继续执行。然而,我注意到在我编写的一些程序中,由于消息流入大于流出,Erlang 的消息盒可能会充满数百个(或数千个)消息。
现在,我还没有在任何一个框架/语言中编写过大型程序,所以我想知道你们对此的经验,以及这是否是我应该担心的事情。
是的,我知道这是抽象的,但我也在寻找相对抽象的答案。
Erlang 的方式 - 消息被发送并排队到接收进程的邮箱中。然后,它们按照先进先出(FIFO)的顺序被移除。一旦第一个进程发送了消息,它就可以继续执行。
Python 的方式 - 进程 A 排队等待向进程 B 发送消息。B 正在执行其他操作,因此 A 被冻结,直到 B 准备好接收消息。一旦 B 打开了读通道,A 发送数据,然后两者都继续执行。
现在,我认为 Erlang 的优点在于它没有任何被阻塞的进程。如果 B 从未能够接收,则 A 仍然可以继续执行。然而,我注意到在我编写的一些程序中,由于消息流入大于流出,Erlang 的消息盒可能会充满数百个(或数千个)消息。
现在,我还没有在任何一个框架/语言中编写过大型程序,所以我想知道你们对此的经验,以及这是否是我应该担心的事情。
是的,我知道这是抽象的,但我也在寻找相对抽象的答案。