6
據我所知,Ruby 1.9使用操作系統線程,但只有一個線程仍然實際上併發運行(儘管一個線程可能在阻塞IO而另一個線程正在處理)。我見過的線程示例只是使用Thread.new
來啓動一個新線程。從Java背景來看,我通常使用線程池,因爲它們「重量級」,因此不會啓動到許多新線程。Ruby 1.9線程池
是否有線程池構造內置到紅寶石?我沒有在默認語言庫中看到一個。或者是否有通常使用的標準寶石?由於操作系統級別的線程是ruby的一個新特性,我不知道它有多成熟。
謝謝。我現在實際上並沒有用例,但是當我正在閱讀鎬書時,這是我不確定的,但是你已經澄清了。 – 2012-07-09 15:32:40
我不明白,當人們提到線程在Ruby中沒用時,因爲它們並不是同時運行的。對於CPU綁定任務來說,它們確實沒有用處,但它們對於任何想要並行執行的阻塞IO都非常有用。例如。併發HTTP請求。 – Kamchatka 2013-03-03 20:03:40
感謝您的評論。我需要進一步闡明線程在Ruby中沒有用處,只是人們需要知道GIL的侷限性,因爲線程不是沒有開銷。對於非阻塞IO,基於事件C的異步調用可能更合適。有關更多信息,請參閱http://blog.gregweber.info/posts/2011-06-16-high-performance-rb-part3。 – Wulfram 2013-03-04 18:50:18