Clojure refs и add-watch - PullRequest
       29

Clojure refs и add-watch

3 голосов
/ 21 июля 2011

Скажем, у меня есть состояние ref, которое обновляется каждые 30 секунд, и fn, которое я хочу прикрепить к нему, для завершения которого может потребоваться больше времени.Скажем, во время 0 ref обновляется, и вызываемый fn во время 30 ref снова обновляется, но fn все еще работает.Я получаю две копии одной и той же функции или она просто пропускается и выполняется в момент времени 60, предполагая, что к тому времени возвращается fn?

РЕДАКТИРОВАТЬ: я пытаюсь изменить состояние ссылки.Он обновлен где-то еще, я просто пытаюсь использовать его в качестве триггера для выполнения некоторых контрольных вычислений.

1 Ответ

1 голос
/ 21 июля 2011

если вы используете ссылку, две функции будут работать параллельно и конкурировать за право создать следующее состояние ссылки с повторным проигравшим.

Это одно из различий между ссылкамии агенты.агенты работают последовательно, потому что у них есть очередь функций, ожидающих запуска на них.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...