【发布时间】:2012-12-13 18:11:33
【问题描述】:
JRuby 对多线程的支持比常规 Ruby 的支持更好吗?普通旧 Ruby 中的线程有什么问题?
【问题讨论】:
标签: ruby multithreading jruby
JRuby 对多线程的支持比常规 Ruby 的支持更好吗?普通旧 Ruby 中的线程有什么问题?
【问题讨论】:
标签: ruby multithreading jruby
“普通”ruby(或 mri)有一个很大的锁,可防止多个线程一次运行 ruby 代码(称为 GIL 或 GVL)。
Rubinius 和 jruby 没有这个锁。在 ruby 1.8.x 中,线程也是绿色线程,但从 ruby 1.9 开始,ruby 线程被映射到本地线程。不过,GVL 会阻止您获得很多好处。
原生扩展可以在锁之外运行代码,例如,多个 MySQL 查询可以从不同的线程同时运行,但是当它们不持有锁时它们不能调用常规的 ruby api
【讨论】: