ryoakg
4/1/2016 - 5:45 AM

async_thread_pattern.clj

(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)