我有一些代码尝试通过频道发送消息或在150ms后超时:
(let [[ret _] (alts!! [[work-chan parsed-body] (timeout 150)])]
(cond ret :ok :else :error))
我想知道通过频道发送消息的Clojure惯用方法是什么,是alt!推荐的方式?如果是这样,我应该如何使用它?
答案 0 :(得分:0)
回答: In clojure (core.async) what ‘s the difference of alts and alt
必须在alt!
块中使用go
,alt!!
函数将锁定该线程。
alts!!
与alts!
类似,不同之处在于<!!
,并且会像>!!
一样进行,会阻止直到完成,并且不适用于(go ...)
块。
文档:https://clojure.github.io/core.async/#clojure.core.async/alt!!