精華區beta Ruby 關於我們 聯絡資訊
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)