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

时间:2012-11-30 04:46:16

标签: ruby performance concurrency

我一直在阅读关于Ruby 1.9 Thread的内容,我发现所有ruby线程都通过Global Interpreter Lock(GIL for friends),而并发性实际上是不存在的。

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

我的问题基本上就是 - 如果这些线程不是并发的话,这一点是什么意思?是否有希望将来会并驾?

2 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:0)

并行性是不存在的,但Ruby线程不会阻止Ruby代码的并发执行。即使在单个核心机器上,也可以执行并发代码。我想你只是简单地混淆了“并发”的条款。并行'。

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