1

JRuby 对多线程的支持比普通 Ruby 的支持好多少?普通旧 Ruby 中的线程有什么问题?

4

1 回答 1

2

“普通”ruby(或 mri)有一个很大的锁,可以防止多个线程一次运行 ruby​​ 代码(称为 GIL 或 GVL)。

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

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

于 2012-12-13T18:27:19.257 回答