Ruby线程不够好?

时间:2012-12-13 18:11:34

标签: ruby multithreading jruby

JRuby对多线程的支持如何比常规Ruby对它的支持更好?普通老Ruby中的线程出了什么问题?

1 个答案:

答案 0 :(得分:2)

“正常”ruby(或mri)有一个很大的锁定,可以阻止多个线程一次运行ruby代码(称为GIL或GVL)。

Rubinius和jruby没有这个锁。在ruby 1.8.x中,线程也是绿色线程,但是从ruby 1.9开始,ruby线程被映射到本机线程。 GVL阻止你获得很多好处。

本机扩展可以在锁之外运行代码,这样,例如,多个MySQL查询可以同时从不同的线程运行,但是当它们没有锁定时它们不能调用普通的ruby api