Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我们通过托管 IronRuby 引擎实现了表达式评估器。您可以在此处查看简化版的评估器。
现在我们正试图通过在多个线程中执行表达式来从 IronRuby 获得更多性能(我们得到了它)。一个问题困扰着我们——Execute 方法线程安全吗?
ScriptRuntime, ScriptEngine, 和ScriptScope都是线程安全的,设计用于线程之间。具体来说,ScriptScope使用线程安全的数据存储,因此ScriptScope可以在线程之间共享。
ScriptRuntime
ScriptEngine
ScriptScope
如果您为脚本执行提供自己的作用域,则需要确保作用域的数据存储是线程安全的。此外,在更改 a 中的数据时ScriptScope,通过锁定确保线程安全,因此请注意,许多不同的线程更改共享数据ScriptScope会降低性能。从 ScriptScope 读取数据不会锁定。