【问题标题】:Advantages of non-concurrent Ruby Threads in Ruby 1.9?Ruby 1.9 中非并发 Ruby 线程的优势?
【发布时间】:2012-11-30 04:46:15
【问题描述】:

我一直在阅读有关 Ruby 1.9 线程的文章,我发现所有 ruby​​ 线程都通过全局解释器锁(朋友的 GIL)并且实际上不存在并发。

我做了一个测试(没有任何信号也没有等待),使用线程的性能不仅没有提高,而且操作实际上比串行运行花费更多的时间

我的问题基本上是 - 如果这些线程不是并发的,它们有什么意义?有没有希望他们将来会并发?

【问题讨论】:

    标签: ruby performance concurrency


    【解决方案1】:

    许多其他 Ruby 解释器(JRuby、Rubinius)实际上并没有 GIL。此外,MRI 2.0 也将取消 GIL。

    此外,在很多情况下(例如等待 IO 时),解释器确实会切换到另一个线程。因此,虽然它技术上不是多线程(在 MRI/REE 1.9 的情况下),但它确实获得了一些好处。

    【讨论】:

      【解决方案2】:

      不存在并行性,但 Ruby 线程不会阻止 Ruby 代码的并发执行。即使在单核机器上,并发代码执行也是可能的。我认为您只是将“并发”和“并行”这两个术语混为一谈。

      有关详细信息,请参阅 Jesse Storimer 的使用 Ruby 线程

      【讨论】:

        猜你喜欢
        • 2012-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-19
        • 1970-01-01
        • 2011-01-29
        • 2010-11-26
        相关资源
        最近更新 更多