Pergunta

Implementamos o avaliador de expressão por meio do mecanismo IronRuby de hospedagem.Versão simplificada do avaliador que você pode ver aqui.

Agora estamos tentando obter mais desempenho do IronRuby através da execução de expressões em vários threads (e conseguimos).Uma questão nos incomoda: o thread do método Execute é seguro?

Foi útil?

Solução

ScriptRuntime, ScriptEngine, e ScriptScope são todos thread-safe, projetados para serem usados ​​entre threads.Especificamente, ScriptScope usa um armazenamento de dados seguro para threads, então ScriptScope pode ser compartilhado entre threads.

Se você fornecer seu próprio escopo para execução de scripts, precisará garantir que o armazenamento de dados do escopo seja seguro para threads.Além disso, ao alterar dados em um ScriptScope, a segurança do thread é garantida pelo bloqueio, portanto, esteja ciente de que muitos threads diferentes alteram um arquivo compartilhado ScriptScope degradará o desempenho.A leitura de dados de um ScriptScope não bloqueia.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top