Fai*_*lde 4 erlang messaging process
在 Erlang 中,如果两个进程 A 和 B 同时向进程 C 发送消息。会有竞争条件吗?
C 会收到来自 A 的完整消息,然后继续处理来自 B 的消息吗?还是 C 可能会同时收到 A 的消息块和 B 的消息块?
消息接收是一个原子操作。
如果您对它是如何完成的感兴趣,请阅读 VM 的源代码。如果我简化它,发送过程正在执行以下步骤:
如您所见,复制是在临界区之外(之前)完成的,临界区非常快。它只是在玩弄一些指针。