Мне трудно понять вывод следующего примера кода.
(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))
Я ожидал увидеть задержку в 500 мс между каждым числом, которое печатается в REPL, получая числа 1-5 для того, чтобы другой диапазон начал печатать.
Тем не менее, создается впечатление, что числа чередуются при вводе Thread / sleep в блок go, который читает из канала.У меня сложилось впечатление, что элементы извлекаются из канала в том же порядке, в котором они помещены в канал?
Чего-то мне не хватает?