淺談 Ruby 的 Fiber(八)
到這篇為止,我們已經完成了將 Fiber 應用在程式中的基本雛型,現在只需要將上週未完成的錯誤處理,我們就能獲得一個可以正常發送訊息到伺服器的伺服器。
到這篇為止,我們已經完成了將 Fiber 應用在程式中的基本雛型,現在只需要將上週未完成的錯誤處理,我們就能獲得一個可以正常發送訊息到伺服器的伺服器。
上週我們開始重構 Fiber 的結構,透過一個統一的 Selector
物件來選取這個「當下」可以進行 I/O 操作的物件。
不過,我們原本預期是因為使用 rescue
來捕捉錯誤控制流程才讓他運行不正常,經過一週的思考後,卻發現事情跟預想的不太一樣。
經過前面幾篇文章的介紹,我們已經初步的了解 Fiber 的性質。這系列的文章目標是利用 Fiber 實現再不透過 Thread 或者 Process 的情境,來實現支援多人連線的 TCP 聊天伺服器。
從這一篇開始,我們就要正式的來挑戰完整的實作了!
經過上次的嘗試,我們已經開始對於 Fiber 的性質有一些了解,目前還需要解決已經結束的 Fiber 被呼叫,以及來不及處理的問題。
在上週的文章我們注意到 Fiber 的使用並不是那麼容易的,因為我們需要自行管理每一個 Fiber 被恢復(#resume
)的時機,這週就繼續來挑戰吧!
延續上一篇文章的實作,我們已經有一個簡易的 Thread 版本 TCP Socket 伺服器可以運作,那麼該怎麼用 Fiber 修改呢?
第一篇我們已經大致上了解 Fiber 的運作原理,不過要能夠實際上的掌握跟應用,我認為是需要靠實作來熟悉的。
所以,這一篇我們先來講學習 Socket 最常見的 TCP 伺服器實作吧!
前陣子再研究 Ruby 從 1.9.3 就開始提供的 Fiber 該怎麼使用,不過網路上的資料大多都只是簡單的討論。那麼 Fiber 到底是什麼呢?這系列的文章會詳細的介紹 Fiber 的基本概念,還有一些可以應用的方式。
今年的 RubyKaigi 比去年提早不少,作為 Ruby 開發者最大的盛會,今年也不意外的延續去年探討 Ruby 3 的可能性跟更多 Ruby 的深度應用。也因次,不意外的讓大家都聽的似懂非懂,而且還讓我感覺一年比一年的難度更高。
總之,來看看今年的 RubyKaigi 吧!