我读过这篇关于 core.async的文章并学习了 < ! !用于阻塞主线程,直到 go 块返回最后一个通道。在原始示例中, < ! !并且 go 块在里面(剂量...),如果它们放在外面可以吗?看起来他们的行为是一样的。
;;original example code
(let [c (chan)]
(doseq [i (range 10)]
(go
(Thread/sleep 1000)
(>! c i)))
(doseq [_ (range 10)]
(<!!
(go
(println (<! c))))))
;;putting <!! part outside doseq
(let [c (chan)]
(doseq [i (range 10)]
(go
(Thread/sleep 1000)
(>! c i)))
(<!!
(go
(doseq [_ (range 10)]
(println (<! c))))))