1

我正在使用clojure.lang.RT(使用 clojure-1.4.0.jar)在运行时评估应用程序最终用户提供的一些脚本,执行以下操作:

return (Boolean) RT.var("clojure.core", "eval").invoke(RT.var("clojure.core", "read-string").invoke(script))

... 和:

IFn fn = (IFn) RT.var("clojure.core", "eval").invoke(RT.var("clojure.core", "read-string").invoke(script))

鉴于var方法是静态的,我可以假设clojure.lang.RT API 的上述使用是线程安全的吗?

4

1 回答 1

1

对 RT.var 的调用与您正在调用的脚本一样是线程安全的。如果您运行两个脚本,每个脚本都通过调用更改了一些 var,def或者defn这两个脚本可能会获得相互不一致的 var 内容视图。总的来说,这很可能是安全的。

于 2013-02-26T18:49:16.140 回答