IronRuby ScriptSource.Execute è sicuro?
-
21-09-2019 - |
Domanda
Siamo implementati di valutatore delle espressioni tramite hosting del motore ironruby. Versione semplificata del valutatore che puoi vedere qui.
Ora stiamo cercando di ottenere più prestazioni da Ironruby tramite le espressioni in molti thread (e l'abbiamo ottenuto). Una domanda ci dà fastidio: il thread del metodo Esecut è sicuro?
Soluzione
ScriptRuntime
, ScriptEngine
, e ScriptScope
sono tutti sicuri del filo, progettati per essere utilizzati tra i thread. In particolare, ScriptScope
Utilizza un data-store thread-safe, quindi ScriptScope
può essere condiviso tra i thread.
Se si fornisce il proprio ambito da eseguire per gli script, dovrai assicurarti che l'archivio dati di Ambito sia sicuro. Inoltre, quando si muta i dati in a ScriptScope
, la sicurezza thread è garantita dal blocco, quindi tieni presente che molti thread diversi che mutano un condiviso ScriptScope
degraderà le prestazioni. La lettura dei dati da un screptscope non si blocca.