(require '[clojure.core.async :as async :refer [>!! <!!]])
(defn start-thread []
(let [ch (async/chan 3)]
(async/thread
(loop []
(when-let [x (<!! ch)]
(some-task x)
(recur)))
(println "done."))
ch))
(def chan-holder (atom nil))
(reset! chan-holder (start-thread))
(async/close! @chan-holder)