同步和dosync之间的差异 - 有什么额外的事务标志?

时间:2014-05-06 11:42:45

标签: syntax clojure transactions

在Rich Hickey Code here中,他将他的Clojure Ants代码包含在sync函数中(当人们习惯性地期望dosync时)。

当我们查看doco for sync here时,我们会看到

  

与dosync相同,但允许额外选项(目前不支持)。可能最好在目前使用dosync。

我的问题是 - dosync运算符的额外事务标志是什么(甚至是可能的)?它是否像数据库事务隔离级别一样,你有不同的设置,如read-committed等。

1 个答案:

答案 0 :(得分:1)

没有可能的标志会产生任何影响。 sync的宏声明是:

 (defmacro sync 
   [flags-ignored-for-now & body]
   `(. clojure.lang.LockingTransaction
       (runInTransaction (fn [] ~@body)))) 

所以你可以放任何你想要的东西;-)这用于蚂蚁演示,因为当编写该演示语言时,语言正在发展,并且认为需要一些标志,结果证明不是案件。