【发布时间】:2011-06-20 22:18:14
【问题描述】:
在 ref 中给定一个 PersistentQueue:
(def pq (ref clojure.lang.PersistentQueue/EMPTY))
弹出队列并获取结果的惯用方式是什么?
我对您的批评的最佳尝试:
(defn qpop [queue-ref]
(dosync
(let [item (peek @queue-ref)]
(alter queue-ref pop)
item))
alter 返回已经弹出的队列的事务中值,因此您不能只自己进行更改。
【问题讨论】:
-
添加到队列的惯用方法是:(dosync (alter pq conj new-item))
标签: concurrency clojure queue