Ruby Concurrency 筆記
- Backend
- 04 Jan, 2021
Ruby 3.0.0 在去年聖誕節推出,release note 提到了一些 concurrency 相關的新功能,一邊研究一邊做個紀錄
在 Ruby 3.0.0 Released 提到了 Ruby 針對 Concurrency 加入了 Fiber#scheduler 的新功能,讓 Fiber 可以實作出 Non-blocking 的操作。
這個新功能的主要貢獻者 Samuel Williams 大大,之前就致力於 async gem,async 是一個基於 Fiber 實作出 event-driven IO 的 gem。Samuel 也做了好幾個基於 async 的各種實作,像是 async-io、async-http。並利用這些當作基底實作出一個 rack-compatible HTTP server: Falcon。
關於 Ruby Concurrency 相關的介紹,有找到一篇文章寫得很好:https://www.honeybadger.io/blog/ruby-concurrency-parallelism
關於 Fiber 的知識可以參考蒼時弦也大大的系列文章:https://blog.frost.tw/tags/Concurrency
關於新的 Fiber Scheduler 可以參考這位大大的回顧,以及他的 Fiber Scheduler 實作: https://coderemixer.com/2020/07/26/whats-new-in-ruby-3-fiber/ https://coderemixer.com/2020/12/22/ruby-3-fiber-scheduler-evt-dev-log/