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