私は時々Rubyをハッキングしてきましたが、大きなことやマルチスレッド化したことは何もしていません。MRIはグリーンスレッドのみをサポートし、JRubyはJVMを介したネイティブスレッドをサポートしていると聞きました。しかし、ブログやディスカッショングループで、「Railsはスレッドセーフではない」またはRuby自体はスレッドセーフではないというコメントに出くわしました。たとえば、requireステートメントに問題があると誰かがコメントしました。それは少し基本的に聞こえます。
並行性を適切に処理しないJavaアプリをたくさん見ましたが、時々悪夢を見ました:-)しかし、少なくとも、自分が何をしているのかを本当に知っていれば、Javaでスレッドセーフなアプリケーションを作成できます(簡単ではありません)。
これはすべて非常に憂慮すべきことのように聞こえますが、誰かがもっと詳しく説明することはできますか?正確には何が問題であり、これが事実である場合、Railsはどのように機能するのでしょうか?競合状態やデッドロックなしで正しく機能するマルチスレッドRubyコードを記述できますか?JRubyとMRIの間で移植可能ですか、それともJVMネイティブスレッドを適切に利用するためにJVM固有のコードをハックする必要がありますか?
編集:
人々はレールスレッディングのもの(それ自体は素晴らしい)とグリーンスレッディング対ネイティブスレッディングにしか答えていないように見えるので、私は2つの質問をするべきでした。スレッドセーフに関するRubyのコア問題に関する私の懸念は、実際には対処されていません。場合によっては、requireに少なくとも(未解決の?)問題があるようです。