Я должен переписать этот код с помощью агентов, в результате результат х равен 0 (это означает, что каждый поток выполняется один за другим). Но у меня проблемы, потому что у меня недостаточно знаний об использовании агентов.
Оригинальный код:
(def x 0)
(let [t1 (Thread. #(dotimes [_ 10000] (def x (inc x))))
t2 (Thread. #(dotimes [_ 10000] (def x (dec x))))]
(.start t1)
(.start t2)
(.join t1)
(.join t2)
(println x))
Когда я хочу использовать агент с await (agent_name), чтобы каждый поток работал отдельно, он не работает, результат всегда отличается от нуля.
Пожалуйста, какие-либо предложения по этому поводу?