Чтение через Core Async walkthrough Не думаю, что я видел этот прецедент. У меня есть один производитель и много одинаковых потребителей.Может ли канал иметь несколько потребителей?
(def mychan (chan))
(defn my-expensive-fn [arg] (prn-expensively arg))
; four identical consumers
(go (while true (my-expensive-fn (<!! mychan))))
(go (while true (my-expensive-fn (<!! mychan))))
(go (while true (my-expensive-fn (<!! mychan))))
(go (while true (my-expensive-fn (<!! mychan))))
; something generating lots of items
(doseq [item in lots-of-items]
(something-expensive)
(>!! mychan item))
- Правомерно?
- Есть ли более идиоматический способ сделать это, а не повторять (копировать или в цикле) код потребительского вызова?
Блестящий, спасибо большое. – Joe
Рассмотрите возможность использования 'go-loop' вместо' go' + 'loop'. –
обновлено, спасибо – noisesmith