2009-12-19 20 views
2

Ruby 1.9有線程,但它們有很多問題 - 最大的一個問題是它們不能在同一個跨平臺上工作(優先級的行爲不同,loop {}在線程內會在Solaris中吃掉整個過程,但不是Linux和綠色線程等)。繞過Ruby 1.9的新「原生」線程

但是,他們使新的本機線程類名稱與舊的綠色類相同:線程。

有沒有辦法可以繞過這個可靠嗎?或者沒有本地線程構建ruby 1.9?

我想我可以放棄舊的綠色線程類,但我不知道是否會允許線程安全的C擴展無法正常工作。

Ciao!

回答

1

AFAIK,Thread類是用C編寫的,所以你必須重新編譯Ruby版本,包括以前的實現。事實上,可能會有一些不兼容。

我對Solaris和Threads沒有太多的經驗。如果你主要使用線程,一個可能的解決方案是使用JRuby而不是標準的Ruby實現。 JRuby基於JVM,並具有與標準Java線程相媲美的本地線程。 我假設一個基於Java的環境可以在Solaris上按預期工作。

1

這聽起來像一個錯誤。如果你可以在Ruby issue tracker舉報,那會很好。至於你的問題,我不認爲你可以很容易地改變ruby如何處理線程,但看看./configure選項(./configure --help),看看是否有相關的東西。

+0

我有一些錯誤:http://redmine.ruby-lang.org/issues/show/2359 我想我應該提交一個「這真的是我們想要做的」bug ... – 2009-12-20 05:03:55

+0

我剛剛提交了一個通用的錯誤我們將看到會發生什麼。 http://redmine.ruby-lang.org/issues/show/2505 – 2009-12-20 05:08:39