我曾经困惑这个问题,除了这个之外,我什么也没有找到。
“线程调度程序错误修复和性能改进。在Ruby Enterprise Edition上进行线程处理的速度可以比官方版本的Ruby 1.8快10倍以上。”
“线程调度程序错误修复和性能改进。在Ruby Enterprise Edition上进行线程处理的速度可以比官方版本的Ruby 1.8快10倍以上。”
GIL(全局解释器锁,官方称为GVL)并不像听起来那么糟糕。例如,在进行IO操作时,Ruby会释放解释器锁(参见此处)。最近我们经常看到的另一个特性是,C扩展开发者有能力通过调用rb_thread_blocking_region
手动释放锁,这将在GIL被释放的情况下执行一个C级别的函数。如果某个C操作可以保证没有副作用,那么这可能会产生巨大的影响。一个很好的例子是RSA密钥生成 - 这完全在由OpenSSL分配的内存中运行,因此我们可以安全地释放GIL。
引入于1.9版本的Fiber或最近的项目Celluloid,与几年前相比,更加友好地展示了Ruby并发的状态。
最后但并非最不重要的,CRuby VM 的作者 Koichi Sasada 正在积极开发 MVM 技术,该技术将允许在单个 Ruby 进程中运行多个 VM,从而以另一种方式实现并发。