NeverBlock高級非阻塞 IO 庫
NeverBlock是一個使用Ruby纖程進(jìn)行異步數(shù)據(jù)庫訪問的庫。在此之前,對纖程的使用意味著NeverBlock只能在Ruby 1.9上運行。新發(fā)布的NeverBlock使用纖程功能的修回版本(backport)以解決這個問題。Aman Gupta 最近發(fā)布了一個叫做“Poor Man's Fibers”的基于Ruby線程的纖程實現(xiàn)(在NeverBlock Github存儲庫中的纖程實現(xiàn))。
使用線程模擬纖程通常占用更多的資源,帶來跟多內(nèi)存使用和調(diào)度開銷。但是,NeverBlock池化使用(pool)纖程,這樣應(yīng)該能限制修回版本在性能上帶來的沖擊。JRuby使用了一個類似的方法來為其Ruby 1.9支持提供纖程(GitHub資料庫中JRuby的纖程實現(xiàn))。JRuby的纖程實現(xiàn)也將纖程映射為線程,與“Poor Man's Fibers”具有相似的性能特點。NeverBlock的創(chuàng)始人之一——Muhammed比較了纖程的開銷和線程的開銷,發(fā)現(xiàn)Ruby 1.9的纖程耗費少得多的內(nèi)存,而創(chuàng)建速度也快得多。
NeverBlock新版本的另一個特性是它內(nèi)建對Rails的支持
評論
圖片
表情
