Ruby 又要添加綠色線程了 Thread::Green

Ruby 又要添加綠色線程了 Thread::Green

來自專欄 代碼水上書

翻到了 ruby-lang 的這個 issue,Eric Wong 給 Ruby 提了一個綠色線程的 PR

bugs.ruby-lang.org/issu

總結下

  1. Eric Wong 給 ruby 增加了可以自動調度的 fiber,暫命名為 Thread::Green。就是類似 go 的 goroutine 這樣的輕量級線程
  2. Queue, SizedQueue 等用於同步的類是可以和 Thread::Green 一起使用的。意味著現有的 WebServer 換成 Thread::Green 很簡單可以遷移
  3. Matz, ko1 等大佬紛紛拍手稱讚,(說不定很快就能用上了)
  4. 之後 ruby 可以說擺脫非同步編程模型了,直接起 Thread::Green 然後用 blocking IO 就可以和 node 的 callback hell 懟一懟
  5. 對『應用級別』開發者意味著 Web Server 會更高效,Rails 等框架也會更高效

用法大概就是和 Thread api 會兼容 所以沒什麼區別,比如下面示例:

urls = ["https://...", ...]results = urls.map do |url| Thread::Green.new(url) do |url| # request url .... endend


感覺 Eric Wong 這個人很神奇啊,Unicorn 應該也是他寫的。很低調、很少出境,不用非自由軟體..有誰知道他的故事..


壞消息就是我之前寫的庫已經失去存在意義了 lightio, 不過可以當作個教學示例吧,這些功能從 ruby 層面去實現大概就是這個庫

推薦閱讀:

關於完全聽不懂 Ruby 元編程在說什麼的事(零)
windows10下用gem安裝jekyll失敗,怎麼辦?(已解決)
Ruby/Rails為什麼不如以前熱門了?
brew升級後ruby報錯怎麼辦?
Haseeb Qureshi:看我如何用Ruby來破解我的Reddit密碼

TAG:Ruby | Go語言 | 編程 |