2010-11-05 20 views
2

这比任何其他更好奇(我应该完全放弃并尝试jRuby),但是可以禁用YARV ruby​​的全局解释器锁和任何其他相关的锁吗?是否可以禁用YARV的全局解释器锁?

我认为这会使您的保修无效,因为一些YARV Ruby的库不是线程安全的,但会导致其他问题吗?

回答

0

除非您实际编辑源代码并重新编译,否则无法将其禁用。我没有看过它是如何实现的,但我猜测很难将它“弹出”出代码。如果你不想要GIL,你可以试试JRuby,而且我很确定Rubinius也没有。

+0

我下Rubinius不得不引入GIL以使C扩展总能正常工作的印象。或者,也许GIL仅在使用C扩展时才有效?这也可能是我完全错误。 – cam 2011-01-26 07:38:51

+0

你不需要一个GIL的C扩展(我认为)。 Brian Ford在最后一次PDXruby会议上表示,他们这样做的方式是在修改变量时添加一个小锁。因此,如果一个线程正在修改@a,那么其他执行相同操作的线程将不得不等待,而执行其他操作的线程将保持正常运行。 – henrikhodne 2011-02-08 16:32:34

0

Tenderlove具有tweeted关于增补禁用GIL:

我想看看@ _ko1的实验性的补丁删除GIL /立方厘米 @yukihiro_matz #rubyconf

相关问题