Ist IronRuby scriptSource.execute Thread sicher?
-
21-09-2019 - |
Frage
Wir werden den Ausdrucksbewerter über die Hosting IronRuby Engine implementiert. Vereinfachte Version des Evaluators, die Sie sehen können hier.
Jetzt versuchen wir, durch IronRuby mehr Leistung zu erzielen, indem wir in vielen Threads ausführte (und wir haben es bekommen). Eine Frage stört uns - ist ausführender Methode -Thread sicher?
Lösung
ScriptRuntime
, ScriptEngine
, und ScriptScope
sind alle fadensicher und für die Verwendung zwischen Threads ausgelegt. Speziell, ScriptScope
Verwendet also einen thread-safe Datengeschäft, also ScriptScope
kann zwischen Threads geteilt werden.
Wenn Sie Ihren eigenen Umfang für Skripte zur Verfügung stellen, gegen die Skripte ausgeführt werden können, müssen Sie sicherstellen, dass der Datenspeicher des Scope thread-safe ist. Auch wenn Daten in a mutieren ScriptScope
, Die Gewindesicherheit wird durch Verriegelung sicher ScriptScope
wird die Leistung beeinträchtigen. Das Lesen von Daten aus einem Skriptscope sperrt nicht.