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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top