gpt4 book ai didi

concurrency - Clojure: Agent calling Agent: 疑似死锁?

转载 作者:行者123 更新时间:2023-12-02 02:00:58 34 4
gpt4 key购买 nike

考虑以下代码:

(let 
[slave-agent (agent 0)
run-slave (fn [_] (println "running slave agent"))
run-master (fn [_]
(loop []
(println "sending to slave agent")
(send-off slave-agent run-slave)
(Thread/sleep 1000)
(recur)
)
)
master-agent (agent nil)
]
(send-off master-agent run-master)
)

使用发送/发送的任意组合,我无法让从属代理运行。但是,当我在经典的 java.lang.Thread 中运行 run-master 时,一切正常。

有没有人有想法。

谢谢

问候

J-C

最佳答案

代理操作(或事务)中的

send 一直保持到操作(或事务)完成(并提交)为止。然而,你的运行大师永远不会回来。因此,您只是积累了实际上从未提交执行的 send-off 请求。尝试这样的事情:

(defn run-master
[_]
(send-off slave-agent run-slave)
(send-off *agent* run-master)
(Thread/sleep 1000))

关于concurrency - Clojure: Agent calling Agent: 疑似死锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17231948/

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