作者giive (lala)
看板Ruby
标题Ruby Thread
时间Fri Nov 3 16:01:51 2006
http://lightyror.blogspot.com/2006/11/ruby-thread.html
JavaEye 有一篇文章“Ruby 的伪线程”,讲述的是 Ruby 在 Thread 的问
题。在目前为止,Ruby 的 Thread 还不是 native thread,所以根据 jack 的
说法
==============================================================
这样做的确使得 Ruby 的 Thread 很容易控制,程序也不容易产生类似
死锁这类严重的线程问题。但是效率始终无法提高,因为在 ruby 进程
中,实际上只有一个真实的线程在运行,同样的代码在那麽多核或者多
cpu 的电脑上运行效率和单核cpu的电脑上的效率并不会相差多少。
==============================================================
当然 Thread 对於 Performance 对於效能的进步是有很大的帮助啦。不过
目前 Ruby 上面最有希望的 Native Thread Virtual Machine:YARV 目前处於
缓步状态。(一个人作实在太操了)并且 YARV 到目前并没有完整的计画支援
continuation 的计画,这实在对 Ruby 社群更加减少了使用 YARV 的动力。
根据 Another Year, Another Interpreter 这篇文章,更是抛下一个震撼弹
=========================================================
And then Matz and Koichi dropped the bomb: Ruby 2.0 would
support neither continuations nor green threads.
=========================================================
真是太惨了,看来 Thread 在 Ruby 还是遥遥无期。这时候,Ruby 社群应该
把重心投入在 YARV 上面,还是刚刚传出大捷报的 JRuby 上面呢?毕竟 JRuby 是
Native Thread 的,目标也是可以在 JVM 上面跑 Ruby on Rails (目前 JRuby
确定可以跑 Active Record )。这似乎是一个好选择,不过 Ruby 社群是不是愿
意将所有筹码压宝在 JRuby 呢?JRuby 现在可是由 SUN 这家商业公司所主导的。
当然就算 Ruby 支援 Thread ,也会有很多问题要解决。Rails 本身不是
Thread Safe 的,Zed Shaw (Mongrel 作者)也说 Meta Programming 有很多
Thread Safe Probelm 。总之,Thread on Ruby 是一个难题,短期内也应该不
会有很好的解法。
感谢ogamenewbie帮忙排版
--
lighty RoR 是一个介绍 lighttpd , SQLite , Ruby and Rails 的 Blog
http://lightyror.blogspot.com/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.218.90.242
※ 编辑: giive 来自: 61.230.107.64 (11/04 11:28)