4

私はRuby1.9スレッドについて読んでいますが、すべてのルビースレッドがグローバルインタープリターロック(友人の場合はGIL)を通過し、同時実行性は実際には存在しないことがわかります。

私は(シグナルも待機もなしに)テストを実行しましたが、スレッドを使用したパフォーマンスは向上するだけでなく、実際には、スレッドをシリアルに実行するよりも操作に時間がかかります。

私の質問は基本的にです-それらが同時でない場合、これらのスレッドのポイントは何ですか?将来的に同時進行するという希望はありますか?

4

2 に答える 2

3

他の多くのRubyインタープリター(JRuby、Rubinius)は実際にはGILを持っていません。また、MRI2.0はGILも廃止する予定です。

また、多くの場合(IOを待機している場合など)、インタープリターは別のスレッドに切り替えます。したがって、技術的にはマルチスレッドではありませんが(1.9以降のMRI / REEの場合)、いくつかの利点があります。

于 2012-11-30T08:19:11.017 に答える
0

並列処理は存在しませんが、RubyスレッドはRubyコードの同時実行を妨げません。シングルコアマシンでも、コードの同時実行が可能です。「並行」と「並行」という用語を混同したと思います。

詳細については、JesseStorimerによるRubyスレッドの操作を参照してください。

于 2015-07-29T14:23:04.060 に答える