介紹作為 Elixir 核心的 Processes 與延伸的多工框架 OTP,讓我們一起研究分享平常在寫 Elixir 可以輕鬆做到多工底下隱藏的原理以及進階應用。
這系列適合誰 雖然想盡量寫的簡單,但本篇適合以下類型的讀者 沒寫過 Elixir 的工程師想看看 Elixir 的多工模型 已經用 Elixir 一陣子,想自...
在這邊指的 Process 與系統的 process 不同,是指在 BEAM VM (erlang 的 VM) 裡執行的輕量級、獨立運行的執行單元 (其實就是...
在 Processes 之間可以傳送 message 來互相溝通,要發送 message 時使用 send/2 函式,每個 process 會有一個先進先出的信...
使用 send 的時候要小心的事情是 send message 就真的是寄出去而已,對方有沒有收到,甚至是該 process 是不是還在都不會有任何回饋,雖然乍...
alive? 我們可以透過 Process.alive?/1 來得知目標 process 還在不在 先使用 spawn 產生一個會等待 60 秒的 proces...
在 functinoal 裡雖然想盡量保持 immutable ,但必要的時候還是需要有各種的方式儲存狀態,其中一個是使用 process。 使用 proces...
上一篇簡單的使用 send 與 receive 達成了基於一個 process 的狀態儲存,但我們不需要每次都自己做一個,Elixir 提供了更完整的 modu...
比起自己寫 spawn 來執行非同步工作, Task 模組有許多替我們包裝好的非同步 task 函式 async / await 要非同步的執行程式,並在稍後要...
我們在使用 spawn 或是他的延伸 Agent,雖然很靈活,但還是有什麼都要自己來的感覺。這時候就可以使用 OTP 裡面最常用的 GenServer。 可以把...
GenServer 訊息分成兩種: Cast:單純送出,不在乎對象結果 Call:送出後開始等回應 在 GenServer 裡,使用 handle_call...