爲何ruby不須要await

這裏說的是單進程下面的不一樣,nodejs能夠cluster,ruby也能開多個進程。node

首先的緣由是ruby世界的大部分設施非異步的(雖然也有EventMachine和各類異步庫,但那個畢竟不是語言自己的設施,也不夠大衆),因此既然不是異步,也就無需await和asyncruby

另外語言對於解決相同問題的方法論不同:多線程

nodejs是單線程,ruby是多線程。併發

nodejs的線程執行到await時,代碼邏輯會卡在那,可是線程自己不會休息,他會繼續執行其餘計算。異步

async

ruby的一個線程在執行的時候,若是碰到IO、sleep的,代碼的邏輯也是卡在那了,可是,這個線程就休息了,同進程的其餘線程依然能夠使用計算資源繼續工做(由於單進程只能使用單核,因此IO能夠並行,可是計算不能並行)。spa

兩個模型不同,可是達到效果是同樣的(都能IO併發)。線程

相關文章
相關標籤/搜索