以透明的方式編寫非阻塞,并發Ruby代碼 - NeverBlock

fmms 13年前發布 | 13K 次閱讀 Ruby Ruby開發

NeverBlock是一個使用Ruby纖程進行異步數據庫訪問的庫。在此之前,對纖程的使用意味著NeverBlock只能在Ruby 1.9上運行。新發布的NeverBlock使用纖程功能的修回版本(backport)以解決這個問題。Aman Gupta 最近發布了一個叫做“Poor Man's Fibers”的基于Ruby線程的纖程實現(在NeverBlock Github存儲庫中的纖程實現)。

使用線程模擬纖程通常占用更多的資源,帶來跟多內存使用和調度開銷。但是,NeverBlock池化使用(pool)纖程,這樣應該能限制修回版本在性能上帶來的沖擊。JRuby使用了一個類似的方法來為其Ruby 1.9支持提供纖程(GitHub資料庫中JRuby的纖程實現)。JRuby的纖程實現也將纖程映射為線程,與“Poor Man's Fibers”具有相似的性能特點。NeverBlock的創始人之一——Muhammed比較了纖程的開銷和線程的開銷,發現Ruby 1.9的纖程耗費少得多的內存,而創建速度也快得多。

NeverBlock新版本的另一個特性是它內建對Rails的支持。

項目主頁:http://www.baiduhome.net/lib/view/home/1326985065015

 本文由用戶 fmms 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!