JRuby对多线程的支持如何比常规Ruby对它的支持更好?普通老Ruby中的线程出了什么问题?
答案 0 :(得分:2)
“正常”ruby(或mri)有一个很大的锁定,可以阻止多个线程一次运行ruby代码(称为GIL或GVL)。
Rubinius和jruby没有这个锁。在ruby 1.8.x中,线程也是绿色线程,但是从ruby 1.9开始,ruby线程被映射到本机线程。 GVL阻止你获得很多好处。
本机扩展可以在锁之外运行代码,这样,例如,多个MySQL查询可以同时从不同的线程运行,但是当它们没有锁定时它们不能调用普通的ruby api