Каков идиоматический способ Clojure создать поток, который в цикле в фоновом режиме обновляет некоторые общие ссылки и управляет их временем жизни? Я обнаружил, что использую для этого future
, но это похоже на небольшую хитрость, поскольку я никогда не возвращаю значимое значение. Например:
(future (loop [] (do
(Thread/sleep 100)
(dosync (...))
(recur))))
Кроме того, мне нужно быть осторожным, чтобы future-cancel
, когда фоновая обработка больше не нужна. Любые советы о том, как организовать это в приложении Clojure / Swing, были бы хороши. Например, фиктивный JComponent
, который добавлен в мой пользовательский интерфейс, который отвечает за завершение потока при закрытии окна, может быть идеей.