То, что мне нужно, - это простая очередь, что-то, куда я могу ставить задачи и получать их одну за другой от рабочих (без поддержания порядка задач).
Я написал примерно так:
;; Definition
(def q (ref []))
;; Put
(defn put-in-queue [i]
(dosync (alter q conj i)))
;; Get
(defn get-from-queue []
(dosync
(let [v (peek q)]
(alter q pop)
v)))
Это правильное решение? (может быть, есть и лучшие решения для этой задачи)