【发布时间】:2019-02-22 17:50:19
【问题描述】:
我在理解以下代码示例的输出时遇到了一些困难。
(def ch (a/chan 1))
(a/go-loop []
(Thread/sleep 1000)
(a/onto-chan ch [1 2 3 4 5] false)
(recur))
(a/go-loop []
(Thread/sleep 500)
(let [val (a/<! ch)]
(println val))
(recur))
我希望看到打印到 REPL 的每个数字之间有 500 毫秒的延迟,在另一个范围开始打印之前按顺序接收数字 1-5。
但是,当将线程/睡眠引入从通道读取的 go-block 时,数字似乎是交错的。我的印象是从频道中检索项目的顺序与放入频道的顺序相同?
我有什么遗漏吗?
【问题讨论】:
标签: asynchronous clojure core.async