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