Ironruby Scriptsource.execute потока безопасен?
-
21-09-2019 - |
Вопрос
Мы реализованы оценщиком выражения через хостинг двигателя Ironruby. Упрощенная версия оценщика, которую вы можете увидеть здесь.
Теперь мы пытаемся получить больше производительности от Ironruby, выполняя выражения во многих темах (и мы получили это). Один вопрос беспокоит нас - безопасен ли поток метода выполнения?
Решение
ScriptRuntime
, ScriptEngine
, а также ScriptScope
все они безопасны, предназначенные для использования между потоками. Конкретно, ScriptScope
использует безопасную систему данных, поэтому ScriptScope
может быть разделен между потоками.
Если вы предоставите свою собственную область для сценариев для выполнения, вам необходимо убедиться, что хранилищ данных Scope безопасен. Кроме того, при мутировании данных в ScriptScope
, безопасность потока обеспечивается блокировкой, поэтому имейте в виду, что многие разные потоки мутируют общие ScriptScope
Уничтожится производительность. Чтение данных из Scriptscope не блокирует.