1

マルチスレッドに対する JRuby のサポートは、通常の Ruby のサポートよりも優れているのはなぜですか? 単純な古い Ruby のスレッドの何が問題になっていますか?

4

1 に答える 1

2

「通常の」ruby (または mri) には、一度に複数のスレッドが ruby​​ コードを実行できないようにする大きなロック (GIL または GVL として知られています) があります。

Rubinius と jruby にはこのロックがありません。ruby 1.8.x ではスレッドもグリーン スレッドでしたが、ruby 1.9 からは ruby​​ スレッドがネイティブ スレッドにマップされます。ただし、GVL を使用すると、多くのメリットを得ることができなくなります。

ネイティブ拡張機能はロックの外でコードを実行できるため、たとえば、複数の MySQL クエリを異なるスレッドから同時に実行できますが、ロックを保持していない場合、通常の Ruby API を呼び出すことはできません。

于 2012-12-13T18:27:19.257 に答える