gpt4 book ai didi

multithreading - Clojure Promise在原子图内

转载 作者:行者123 更新时间:2023-12-03 12:54:10 24 4
gpt4 key购买 nike

我正在尝试跟踪对服务器的请求,并在数据准备好后执行一些操作。我有以下似乎有效的代码,但我想知道是否有更好的方法可以做到这一点-特别是我感到奇怪的是,在下面的将来,我在内部引用原子时反引用了一个Promise,该原子可能会改变状态。

(def requests (atom {:a (promise) :b (promise)}))
(future @(:b @requests) (println "b is ready"))
(swap! requests assoc :c (promise))
(deliver (:b @requests) 100)
>> b is ready

谢谢,

最佳答案

Atoms旨在解决此问题:

Internally, swap! reads the current value, applies the function to it, and attempts to compare-and-set! it in. Since another thread may have changed the value in the intervening time, it may have to retry, and does so in a spin loop.



因此,只要两个线程在映射中不使用相同的键(:a:b:c),您在这里就很安全。

关于multithreading - Clojure Promise在原子图内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51718493/

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