내 상황에 따라 서로 다른 기능간에 동일한 채널이 공유되므로이 모든 기능이 완료되면 신호를 보낼 때 채널을 닫아야합니다. 이것은 내가 생각해내는 것입니다. 그러나 견인 채널을 처리해야하고 닫기를 사용하는 대신 특수 키워드를 보내야하기 때문에 이상적이지 않습니다! 기능. 이 일을하는 또 다른 방법이 있습니까? core.async의 일부 기능이 있나요?여러 번 닫아야하는 채널 만들기
(defn shared-chan [n]
(let [in (chan)
out (chan)]
(go-loop [n n]
(if (= n 0)
(do
(async/close! in)
(async/close! out))
(let [in-msg (<! in)]
(if (not= :close in-msg)
(do
(>! out in-msg)
(recur n))
(recur (dec n))))))
[in out]))