我们通过托管IronRuby引擎实现了表达式求值器。您可以在此处查看简化版本的求值器:here。
现在,我们正在尝试通过在多个线程中执行表达式来提高IronRuby的性能(并且我们已经成功了)。但是有一个问题困扰着我们 - Execute方法是否线程安全?
现在,我们正在尝试通过在多个线程中执行表达式来提高IronRuby的性能(并且我们已经成功了)。但是有一个问题困扰着我们 - Execute方法是否线程安全?
ScriptRuntime
、ScriptEngine
和ScriptScope
都是线程安全的,设计用于在多个线程之间使用。特别地,ScriptScope
使用线程安全的数据存储,因此可以在多个线程之间共享。ScriptScope
为脚本提供了一个执行范围,如果您自己提供了该范围,则需要确保该范围的数据存储是线程安全的。另外,在更改ScriptScope
中的数据时,通过锁定来确保线程安全,因此请注意,许多不同的线程更改共享的ScriptScope
会降低性能。从ScriptScope
中读取数据不会锁定。