2012-12-13 23 views
1

JRuby對多線程的支持如何比Ruby的常規支持更好?簡單的舊Ruby中的線程有什麼問題?Ruby線程不夠好?

+1

參看http://stackoverflow.com/questions/999482 – Jan

+1

http://stackoverflow.com/questions/56087/does-ruby-have-real-multithreading – rohit89

+0

感謝您的鏈接。 –

回答

2

「Normal」ruby(或mri)有一個很大的大鎖,可以防止一次運行多個線程運行ruby代碼(稱爲GIL或GVL)。

Rubinius和jruby沒有這個鎖。在ruby 1.8.x中,線程也是綠線程,但從ruby 1.9開始,ruby線程被映射到本地線程。 GVL阻止你獲得很多好處。

本機擴展可以運行鎖之外的代碼,這樣,例如,多個MySQL查詢可以同時從不同的線程運行,但他們不能打電話到普通的Ruby API時,他們不持有鎖