介紹作為 Elixir 核心的 Processes 與延伸的多工框架 OTP,讓我們一起研究分享平常在寫 Elixir 可以輕鬆做到多工底下隱藏的原理以及進階應用。
call 與 cast 非常相似,但是 handle_call/3 要求的回傳格式不同 這次要回傳的 tuple 裡分別是 {:reply, reply, ne...
目前我們要產生以及呼叫 GenServer 都是使用 GenServer.start_link/2 與 GenServer.call/3 等 GenServer...
除了 handle_cast 與 handle_call 之外,另一個相當常用的是 handle_info/2 這個 callback 可以接收普通的 proc...
讓我們統整一下整個 GenServer process 從啟動、接收訊息到結束的流程 啟動 啟動並有了剛開始的 state 之後,GenServer 便會自己...
要把 Bank 加入 Supervisor 底下比較方便的方式是讓我們的 Bank GenServer 開始時註冊在一個名字底下,通常可以直接使用 Module...
使用 --sup 建立一個含有 supervision tree 的空專案,這會幫我們產生相 application.ex 檔案 mix new nice_ba...
Supervisor 的監督的對象必須要有實踐 child_spec/1 函數來告訴 supervisor 如何啟動它。 好消息是,如果要監督的對象是 GenS...
你有試過重開嗎? 除了一般的錯誤處理,BEAM 提供了我們另一個藉由關閉 process 在重啟的監督安全網 預設時,當一個 worker process 發...
BEAM 提供一系列的工具,其中的 Observer 可以讓我們圖像化的顯示 process 狀態 打開我們的 nice_bank 裡的 mix.exs檔案 確...
目前我們使用的 Supervisor 開啟時,需指定固定的 children如果需要動態的增加減少監督的 process ,則需要使用 DynamicSuper...