回答
最有可能的原因是因爲ruby沒有「真正的」線程。它有所謂的綠色線程。 ruby解釋器負責調度執行線程而不使用任何底層操作系統線程。這有效地使Ruby單線程化。
即使YARV(紅寶石1.9)一次只使用一個CPU,我不認爲它使用綠色線程。 – 2010-12-05 11:01:58
綠色線程不會使線程池無用。一個線程可能正在等待程序外部的某個內容,在此期間可以安排另一個線程。使用綠色線程通常(通常是?)比順序處理更高效。 – Kelvin 2012-06-01 21:31:09
可能是因爲使用標準庫「隊列」類很容易推出自己的產品。
q = Queue.new
3.times { Thread.new { while something = q.pop(true) rescue nil; ... }
這是一個很好的問題,但我可能會建議將它與Ruby Core結合起來。
你有沒有得到任何迴應? – 2012-05-02 21:42:32
我甚至不記得我是否現在問過...... – rogerdpack 2012-05-03 17:21:18
我的懷疑可能是因爲ThreadPool在Ruby的基於C的實現中沒有那麼有用。 Matz的Ruby Intepreter或另一個Ruby VM一次只能使用一個處理器。
如果您希望在多個處理器上運行多個線程,則需要使用JRuby。
沒錯。線程池,綠色線程,毫無意義。 – Joshua 2010-10-02 01:13:08
如果你有一些阻塞IO,肯定不是毫無意義的? – 2012-05-02 16:56:19
@好點。 – 2012-05-02 21:42:14
- 1. Ruby:爲什麼我的成員沒有設置初始化?
- 2. 爲什麼Ruby沒有is_an?方法?
- 3. 爲什麼我的cookie沒有設置?
- 4. 爲什麼我的UITableView沒有設置?
- 5. 爲什麼沒有DateTime的內置類型?
- 6. 爲什麼Haskell中沒有內置的Set數據類型?
- 7. 爲什麼Ruby有Numeric.new?
- 8. 爲什麼數組實例中沒有內置Array方法?
- 9. 爲什麼Web瀏覽器沒有內置jQuery?
- 10. 爲什麼websphere說MDB沒有配置
- 11. 爲什麼LocationManager沒有lastKnown位置?
- 12. 爲什麼linewidth沒有設置?
- 13. 爲什麼沒有設置變量
- 14. 爲什麼bootstrap選項沒有設置?
- 15. 爲什麼我的重構ruby沒有使用注入工作?
- 16. 爲什麼我的Ruby路徑上沒有當前目錄?
- 17. 爲什麼Ruby塊沒有必要的參數?
- 18. 爲什麼Ruby沒有真正的StringBuffer或StringIO?
- 19. 爲什麼Ruby的select沒有返回套接字?
- 20. 爲什麼Java中沒有內存區域沒有gc發生?
- 21. 爲什麼Ruby的stdlib有DateTime類?
- 22. 有什麼樣Ruby的模塊爲JavaScript
- 23. 爲什麼有不同的Ruby實現?
- 24. 什麼是Threadpool的替代品?
- 25. 爲什麼JOptionPane中的JScrollPane沒有顯示其所有內容?
- 26. 爲什麼Me.components什麼都沒有?
- 27. Ruby on Rails:jQuery爲什麼val沒有定義?
- 28. Ruby on Rails3:爲什麼這個字段沒有定義?
- 29. 在Ruby中,爲什麼堆棧跟蹤中沒有變量名?
- 30. 爲什麼這個嵌入式ruby代碼沒有評估?
是的,我在想什麼類似於Java的ExecutorService。 – JohnMerlino 2014-07-22 22:07:15