使用alt!而不是阿尔特!在Clojure

时间:2015-02-17 05:32:55

标签: clojure channel core.async

我有一些代码尝试通过频道发送消息或在150ms后超时:

(let [[ret _] (alts!! [[work-chan parsed-body] (timeout 150)])]
  (cond ret :ok :else :error))

我想知道通过频道发送消息的Clojure惯用方法是什么,是alt!推荐的方式?如果是这样,我应该如何使用它?

1 个答案:

答案 0 :(得分:0)

回答: In clojure (core.async) what ‘s the difference of alts and alt

必须在alt!块中使用goalt!!函数将锁定该线程。

alts!!alts!类似,不同之处在于<!!,并且会像>!!一样进行,会阻止直到完成,并且不适用于(go ...)块。

文档:https://clojure.github.io/core.async/#clojure.core.async/alt!!