3

IronRubyエンジンをホストすることで式エバリュエーターを実装します。あなたがここで見ることができる評価者の簡略化されたバージョン。

現在、多くのスレッドで式を実行することにより、IronRubyからより多くのパフォーマンスを取得しようとしています(そしてそれを取得しました)。1つの質問が気になります-実行メソッドのスレッドは安全ですか?

4

1 に答える 1

5

ScriptRuntime、、ScriptEngineおよびScriptScopeはすべてスレッドセーフであり、スレッド間で使用するように設計されています。具体的にScriptScopeは、スレッドセーフなデータストアを使用するため、ScriptScopeスレッド間で共有できます。

スクリプトを実行するための独自のスコープを提供する場合は、スコープのデータストアがスレッドセーフであることを確認する必要があります。また、でデータを変更する場合ScriptScope、スレッドセーフはロックによって保証されるため、共有を変更する多くの異なるスレッドScriptScopeはパフォーマンスを低下させることに注意してください。ScriptScopeからのデータの読み取りはロックされません。

于 2009-12-29T03:28:45.693 に答える