Elixir/Erlang 的并發(fā)是基于 Actor 模型的贤徒,而 Actor 在 Elixir 中的表示則是 Process芹壕。我們來看一下 Elixir Process 和 Actor 的術(shù)語和概念。
Elixir/Erlang process
- 運(yùn)行于BEAM之上(這里的process不是指系統(tǒng)進(jìn)程接奈,而是Erlang虛擬機(jī)的進(jìn)程)
- 完全與其他process隔離
- 不會(huì)共享內(nèi)存
- 通過messages與其他process交互
- 有一個(gè)私有狀態(tài)(只能通過私有計(jì)算函數(shù)踢涌,消息監(jiān)聽修改)
- 可以有私有消息監(jiān)聽(計(jì)算函數(shù))來處理來自內(nèi)部和外部的消息
私有監(jiān)聽者,計(jì)算函數(shù)(private listeners序宦,calculation functions)
Elixir/Erlang process’s Mailbox
- 異步地接收內(nèi)部和外部發(fā)來的消息睁壁,所以接收一個(gè)消息不會(huì)阻塞發(fā)送消息
- 同步地將消息傳遞到process的私有監(jiān)聽者(計(jì)算函數(shù))
Elixir/Erlang process’s State
- 是process的私有存儲(chǔ)
- 只能由該process改變
- 當(dāng)process掛了,state會(huì)變?yōu)槌跏紶顟B(tài)