2009-02-03 120 views

回答

28

您的信息已過時。 它是線程安全作爲2.2.2

記住Ruby MRI 1.8.x,紅寶石的使用最廣泛的實現使用Green Threads,所以用1.8.x的,如果你創建100個線程,他們在同一個CPU上運行的所有。因此,當使用MRI託管Rails網站時,您可能希望儘可能多的Ruby運行實例與您擁有CPUS一樣。像passenger這樣的東西爲你照顧。

這對於JRuby來說是一個很大的問題,因爲JRuby具有Native線程,並且看起來雜亂的進程似乎是多餘的。無論如何,它現在整理出來。

另一方面,Iron Ruby,.Net Ruby解釋器運行本地線程。

注意:Ruby 1.9.1使用本地線程,但仍然存在全局解釋器鎖定。

4

基本上它的意思是你不能在同一個進程下在不同的線程下運行rails的多個副本,因爲它可能會導致一些資源在線程之間泄漏,從而無意中造成奇怪的行爲,比如看起來像是在改變對象/隨機時間消失。

此外,也可能出現這樣的情況,即類沒有內置任何同步,因此很難將部分導軌放入線程中,並讓其他部分在線程中共享。

0

值得一提的是,Ruby MRI 1.8.x使用綠色線程,但Ruby MRI 2將具有本地線程。

+0

其實Ruby 1.9已經有本地線程.. – 2009-07-29 22:16:03