iT邦幫忙

鐵人檔案

2024 iThome 鐵人賽
回列表
Software Development

Elixir 多工 : Processes 與 OTP 系列

介紹作為 Elixir 核心的 Processes 與延伸的多工框架 OTP,讓我們一起研究分享平常在寫 Elixir 可以輕鬆做到多工底下隱藏的原理以及進階應用。

參賽天數 15 天 | 共 15 篇文章 | 1 人訂閱 訂閱系列文 RSS系列文
DAY 1

01 前言與目標

這系列適合誰 雖然想盡量寫的簡單,但本篇適合以下類型的讀者 沒寫過 Elixir 的工程師想看看 Elixir 的多工模型 已經用 Elixir 一陣子,想自...

2024-09-15 ‧ 由 韋政 分享
DAY 2

02 Process

在這邊指的 Process 與系統的 process 不同,是指在 BEAM VM (erlang 的 VM) 裡執行的輕量級、獨立運行的執行單元 (其實就是...

2024-09-16 ‧ 由 韋政 分享
DAY 3

03 Message

在 Processes 之間可以傳送 message 來互相溝通,要發送 message 時使用 send/2 函式,每個 process 會有一個先進先出的信...

2024-09-17 ‧ 由 韋政 分享
DAY 4

04 Message 回覆

使用 send 的時候要小心的事情是 send message 就真的是寄出去而已,對方有沒有收到,甚至是該 process 是不是還在都不會有任何回饋,雖然乍...

2024-09-18 ‧ 由 韋政 分享
DAY 5

05 Process 監控

alive? 我們可以透過 Process.alive?/1 來得知目標 process 還在不在 先使用 spawn 產生一個會等待 60 秒的 proces...

2024-09-19 ‧ 由 韋政 分享
DAY 6

06 用 Process 儲存狀態

在 functinoal 裡雖然想盡量保持 immutable ,但必要的時候還是需要有各種的方式儲存狀態,其中一個是使用 process。 使用 proces...

2024-09-20 ‧ 由 韋政 分享
DAY 7

07 Agent

上一篇簡單的使用 send 與 receive 達成了基於一個 process 的狀態儲存,但我們不需要每次都自己做一個,Elixir 提供了更完整的 modu...

2024-09-21 ‧ 由 韋政 分享
DAY 8

08 Task

比起自己寫 spawn 來執行非同步工作, Task 模組有許多替我們包裝好的非同步 task 函式 async / await 要非同步的執行程式,並在稍後要...

2024-09-22 ‧ 由 韋政 分享
DAY 9

09 GenServer

我們在使用 spawn 或是他的延伸 Agent,雖然很靈活,但還是有什麼都要自己來的感覺。這時候就可以使用 OTP 裡面最常用的 GenServer。 可以把...

2024-09-23 ‧ 由 韋政 分享
DAY 10

10 GenServer 訊息

GenServer 訊息分成兩種: Cast:單純送出,不在乎對象結果 Call:送出後開始等回應 在 GenServer 裡,使用 handle_call...

2024-09-24 ‧ 由 韋政 分享