Clojure агенты могут отправлять другим агентам как из refs
, так и atoms
.Любые сообщения, отправляемые этой функцией, сохраняются до тех пор, пока не будет завершено изменение агента, поэтому вам не нужно беспокоиться о том, что они будут соревноваться сами с собой.
на главной странице агентов есть пример размещения агентов в кольце
на боковой заметке, если вы отправляете сообщения из ref
и dosync
тогда сообщения гарантированно будут отправлены только один раз, поскольку транзакция фиксируется.В целом все инструменты параллелизма Clojure предназначены для объединения как с самими собой, так и с другими инструментами параллелизма