clojure.lang.RT线程安全吗?

时间:2013-02-26 09:00:54

标签: clojure

我正在使用 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的上述用法是线程安全的吗?

1 个答案:

答案 0 :(得分:1)

对RT.var的调用与您调用的脚本一样是线程安全的。如果您运行了两个脚本,每个脚本通过调用defdefn来更改某些var,则这两个脚本可能会获得对vars内容的相互不一致的视图。一般来说,这很可能是安全的。