【问题标题】:Can we run multi-threads in parallel in Ruby?我们可以在 Ruby 中并行运行多线程吗?
【发布时间】:2011-11-04 09:53:44
【问题描述】:

如果有办法并行运行多线程,请告诉我。 到目前为止,我所知道的是 Ruby 有一个全局解释器锁或全局 VM 锁,它阻止线程并行运行并同时实现。 请让我知道一些详细的线程示例,以实际理解和验证线程是并行工作还是并发工作。

【问题讨论】:

    标签: ruby multithreading concurrency parallel-processing gil


    【解决方案1】:

    MRI 不支持(仅并发),但 jRuby 支持。

    See this great article, 这个主题还有很多其他的,但这个是最近的,提供了很好的建议。

    【讨论】:

    • Rubinius 2.0 也有真正的多线程,但仍在开发中。
    • 另外注意:C 扩展可以解锁 GIL。因此,根据您想要做什么,您可能已经使用了一个可以绕过限制的库
    • 以下还有什么需要考虑的吗? : 我在某处读到真正的多线程受限于您正在运行的 cpu 内核的数量。这是否意味着如果你有一个双核,你得到的只是 2 个并行线程?
    • 那是一篇很棒的文章——我读过的关于线程的最清晰的介绍。
    最近更新 更多