Представьте себе: плоский мир n * n клеток.Есть движущиеся объекты.Они могут сталкиваться, и в соответствии с процессом один из них должен быть уничтожен.
Я использую идеи из колонии муравьев Рича Хики для представления объектов в качестве агентов.Поэтому после столкновения один из агентов должен прекратить свою работу после получения сообщения от другого агента.
Существует фрагмент кода, иллюстрирующий мою проблему: второй агент неожиданно останавливается.
;agents
(def f_guy (agent nil))
(def s_guy (agent nil))
;functions for agents
(defn f_do [x]
(do
(Thread/sleep 20)
(println "f")
(send-off *agent* f_do)))
(defn s_do [x]
(do
(Thread/sleep 40)
(println "s")
(send-off f_guy nil)
(send-off *agent* s_do)))
;the process
(defn start []
(do
(send-off f_guy f_do)
(send-off s_guy s_do)))
;go
(start)
Спасибо!