shutdown-agents

clojure.core

  • (shutdown-agents)
Initiates a shutdown of the thread pools that back the agent
system. Running actions will complete, but no new actions will be
accepted

2 Examples top

  • ;; Creating an agent
    user> (def a (agent 1))
    #'user/a
    
    ;; Create a function that can handle an agent
    
    user> (defn agent-action [a]
    	33)
    #'user/agent-action
    
    ;; The agent will become 33
    user> (send-off a agent-action)
    #<Agent@dde4f2: 33>
    
    user> @a
    33
    ;; Create another agent before shutdown
    user> (def c (agent 3))
    #'user/c
    
    ;; Shutdown agents is called
    user> (shutdown-agents)
    nil
    
    ;; Attempt to turn c into 33
    user> (send c agent-action)
    #<Agent@b162fa: 3>
    
    ;; The result is that it is still the same value it was initialized with
    user> @c
    3
    
    ;; Agent created after shutdown
    user> (def d (agent 4))
    #'user/d
    
    ;; Try sending it
    user> (send d agent-action)
    #<Agent@356519: 4>
    
    ;; Same thing, there are no threads to process the agents
    user> @d
    4
  • ;; Create the agent that we will be using
    user=> (def a (agent 0))
    #'user/a
    
    ;; Dereference the agent to show the value is 0
    user=> @a
    0
    
    ;; Create a function that can increment the agent
    ;; This will continually update the value of the agent
    user=> (defn agent-inc [a]
            (send-off *agent* agent-inc)
            (inc a))
    #'user/agent-inc
    
    ;; Send the agent to the agent-inc function
    ;; The value is 188 because by the time the repl has sent off the
    ;; agent to the function, the function has already been called recursively
    user=> (send a agent-inc)
    #<Agent@6b850d: 188>
    
    ;; Dereference of the value a second or so later
    user=> @a
    716889
    
    ;; Another dereference in another couple of seconds
    user=> @a
    1455264
    
    ;; Shutdown the threads for the agents
    user=> (shutdown-agents)
    nil
    
    ;; Dereference the agent to see what value it is
    user=> @a
    3522353
    
    ;; Dereference the agent again in a few seconds
    ;; It's the same value, because the agent pool of threads are no longer
    ;; active
    user=> @a
    3522353
    
Log in to add / edit an example.

See Also top

Log in to add a see also.

Plus_12x12 Minus_12x12 Source clojure/core.clj:2021 top

(defn shutdown-agents
  "Initiates a shutdown of the thread pools that back the agent
  system. Running actions will complete, but no new actions will be
  accepted"
  {:added "1.0"
   :static true}
  [] (. clojure.lang.Agent shutdown))
Vars in clojure.core/shutdown-agents:
Used in 0 other vars

Comments top

No comments for shutdown-agents. Log in to add a comment.