January 2017
Intermediate to advanced
565 pages
13h 46m
English
What if you don't care about the result of some operation? You just need to fire something and then forget it. In that case agents are what you need.
Agents also run in separate thread pools, there are two functions that you can use to fire an agent:
send: This executes your function in an implicit thread poolsend-off: This tries to execute your function in a new thread but there's a change, it will reuse another threadAgents are the way to go if you want to cause side effects in a transaction; since, they will only be executed after the transaction has completed successfully.
They work in a very simple manner, here is an example usage:
(def agt (agent 0)) (defn sum [& nums] (Thread/sleep 5000) (println :done) (apply + nums)) (send agt sum ...
Read now
Unlock full access