Ruby 1.9中非并发Ruby线程的优势?

Ruby 1.9中非并发Ruby线程的优势?,ruby,performance,concurrency,Ruby,Performance,Concurrency,我一直在阅读关于Ruby 1.9线程的文章,我发现所有Ruby线程都会通过全局解释器锁(GIL for friends),并发性实际上是不存在的 我已经做了一个测试(没有任何信号也没有等待),使用线程的性能不仅没有提高,而且操作实际上比串行运行它们花费更多的时间 我的问题基本上是——如果这些线程不是并发的,那么它们有什么意义呢?有没有希望在将来它们会同时出现?许多其他Ruby解释器(JRuby、Rubinius)实际上没有GIL。此外,MRI 2.0也将废除GIL 此外,在很多情况下(例如在等待

我一直在阅读关于Ruby 1.9线程的文章,我发现所有Ruby线程都会通过全局解释器锁(GIL for friends),并发性实际上是不存在的

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


我的问题基本上是——如果这些线程不是并发的,那么它们有什么意义呢?有没有希望在将来它们会同时出现?

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


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

并行性是不存在的,但是Ruby线程不会阻止Ruby代码的并发执行。即使在单核机器上,并发代码执行也是可能的。我想你只是把“并发”和“并行”混为一谈了

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