Est-fil IronRuby ScriptSource.Execute sécurité?
-
21-09-2019 - |
Question
Nous avons implémenté évaluateur d'expression par le biais d'hébergement moteur IronRuby. Version simplifiée de l'évaluateur vous pouvez voir .
Maintenant, nous essayons d'obtenir plus de performance de IronRuby via l'exécution d'expressions dans de nombreux threads (et nous l'avons eu). Une question nous dérange - est Exécuter fil de méthode sûre?
La solution
ScriptRuntime
, ScriptEngine
et ScriptScope
sont thread-safe, conçu pour être utilisé entre les fils. Plus précisément, ScriptScope
utilise un thread-safe données magasin, donc ScriptScope
peut être partagé entre les threads.
Si vous fournissez votre propre champ pour les scripts pour exécuter contre, vous devrez vous assurer que les données de portée magasin est thread-safe. En outre, lorsque les données d'un muter ScriptScope
, fil de sécurité est assurée par le verrouillage, donc il faut savoir que beaucoup de threads différents ScriptScope
un partage modificatrices une dégradation des performances. La lecture des données à partir d'un ScriptScope ne se verrouille pas.