gpt4 book ai didi

clojure - Clojure 中的线程安全流行?

转载 作者:行者123 更新时间:2023-12-04 23:30:33 26 4
gpt4 key购买 nike

我在 http://www.learningclojure.com/2010/11/yet-another-way-to-write-factorial.html 上找到了这个代码,但我不明白 pop-task 是否/如何应该是线程安全的。不允许返回两次相同的头吗?

(def to-do-list (atom '()))  
(defn add-task![t] (swap! to-do-list #(cons t %)))
(defn pop-task![] (let [h (first @to-do-list)] (swap! to-do-list rest) h))

如果是这样,是否可以继续使用atom并编写peek和swap!原子地,还是这是 ref 机制的工作?

最佳答案

或者你下降到一个较低的水平。

(def to-do-list (atom nil))

(defn add-task!
[t]
(swap! to-do-list conj t))

(defn pop-task!
[]
(let [[h & r :as l] @to-do-list]
(if (compare-and-set! to-do-list l r)
h
(recur))))

关于clojure - Clojure 中的线程安全流行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5727611/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com