Elixir/Erlang 的并发是基于 Actor 模型的,而 Actor 在 Elixir 中的表示则是 Process。我们来看一下 Elixir Process 和 Actor 的术语和概念。
Elixir/Erlang process
- 运行于BEAM之上(这里的process不是指系统进程,而是Erlang虚拟机的进程)
- 完全与其他process隔离
- 不会共享内存
- 通过messages与其他process交互
- 有一个私有状态(只能通过私有计算函数,消息监听修改)
- 可以有私有消息监听(计算函数)来处理来自内部和外部的消息
私有监听者,计算函数(private listeners,calculation functions)
Elixir/Erlang process’s Mailbox
- 异步地接收内部和外部发来的消息,所以接收一个消息不会阻塞发送消息
- 同步地将消息传递到process的私有监听者(计算函数)
Elixir/Erlang process’s State
- 是process的私有存储
- 只能由该process改变
- 当process挂了,state会变为初始状态