3

考虑以下代码:

(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 时,一切正常。

有没有人有想法。

谢谢

问候

JC

4

1 回答 1

2

send在一个代理动作(或事务)中一直保持到动作(或事务)完成(并提交)。但是,您的 run-master 永远不会返回。因此,您只需累积send-off实际上从未提交执行的请求。尝试这样的事情:

(defn run-master
  [_]
  (send-off slave-agent run-slave)
  (send-off *agent* run-master)
  (Thread/sleep 1000))
于 2013-06-21T12:30:40.280 回答