私はRuby1.9スレッドについて読んでいますが、すべてのルビースレッドがグローバルインタープリターロック(友人の場合はGIL)を通過し、同時実行性は実際には存在しないことがわかります。
私は(シグナルも待機もなしに)テストを実行しましたが、スレッドを使用したパフォーマンスは向上するだけでなく、実際には、スレッドをシリアルに実行するよりも操作に時間がかかります。
私の質問は基本的にです-それらが同時でない場合、これらのスレッドのポイントは何ですか?将来的に同時進行するという希望はありますか?
私はRuby1.9スレッドについて読んでいますが、すべてのルビースレッドがグローバルインタープリターロック(友人の場合はGIL)を通過し、同時実行性は実際には存在しないことがわかります。
私は(シグナルも待機もなしに)テストを実行しましたが、スレッドを使用したパフォーマンスは向上するだけでなく、実際には、スレッドをシリアルに実行するよりも操作に時間がかかります。
私の質問は基本的にです-それらが同時でない場合、これらのスレッドのポイントは何ですか?将来的に同時進行するという希望はありますか?
他の多くのRubyインタープリター(JRuby、Rubinius)は実際にはGILを持っていません。また、MRI2.0はGILも廃止する予定です。
また、多くの場合(IOを待機している場合など)、インタープリターは別のスレッドに切り替えます。したがって、技術的にはマルチスレッドではありませんが(1.9以降のMRI / REEの場合)、いくつかの利点があります。
並列処理は存在しませんが、RubyスレッドはRubyコードの同時実行を妨げません。シングルコアマシンでも、コードの同時実行が可能です。「並行」と「並行」という用語を混同したと思います。
詳細については、JesseStorimerによるRubyスレッドの操作を参照してください。