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)  
  )

send/send-off の任意の組み合わせを使用すると、スレーブ エージェントを実行できませんでした。ただし、従来の java.lang.Thread で run-master を実行すると、すべて正常に動作します。

誰にもアイデアがあります。

ありがとうございました

よろしく

JC

4

1 に答える 1

2

sendエージェント アクション (またはトランザクション) では、アクション (またはトランザクション) が完了する (およびコミットされる) まで保持されます。ただし、実行マスターは決して戻りません。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 に答える