Elixir Process 解剖

Elixir/Erlang 的并发是基于 Actor 模型的,而 Actor 在 Elixir 中的表示则是 Process。我们来看一下 Elixir Process 和 Actor 的术语和概念。

Elixir Process 解剖_第1张图片
Anatomy of an actor (Elixir/Erlang Process)

Elixir/Erlang process

  • 运行于BEAM之上(这里的process不是指系统进程,而是Erlang虚拟机的进程)
  • 完全与其他process隔离
  • 不会共享内存
  • 通过messages与其他process交互
  • 有一个私有状态(只能通过私有计算函数,消息监听修改)
  • 可以有私有消息监听(计算函数)来处理来自内部和外部的消息

私有监听者,计算函数(private listeners,calculation functions)

Elixir/Erlang process’s Mailbox

Elixir Process 解剖_第2张图片
Mailbox
  • 异步地接收内部和外部发来的消息,所以接收一个消息不会阻塞发送消息
  • 同步地将消息传递到process的私有监听者(计算函数)

Elixir/Erlang process’s State

Elixir Process 解剖_第3张图片
State
  • 是process的私有存储
  • 只能由该process改变
  • 当process挂了,state会变为初始状态

你可能感兴趣的:(Elixir Process 解剖)