Advertisement
Guest User

Untitled

a guest
Dec 8th, 2014
241
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (defn log
  2.   "Print the message with current *name* as a label."
  3.   [message]
  4.   (println (str *name* ": " message)))
  5.  
  6.  
  7. (defmacro defthread
  8.   "Define object flow in new thread and
  9.   binds *name*."
  10.   [thread-name & body]
  11.   `(def ~thread-name
  12.      (quote
  13.       (binding [*name* ~(name thread-name)]
  14.         (future ~@body)))))
  15.  
  16. (defn begin
  17.   "First message in thread."
  18.   [message]
  19.   (log (str message " ●")))
  20.  
  21. (defn end
  22.   "Last message in thread."
  23.   [message]
  24.   (log (str message ". ○")))
  25.  
  26. (defthread client
  27.   (begin "Pay")
  28.   (>!! m1 1)
  29.   (log "Wait for cheque")
  30.   (<!! m2)
  31.   (log "Get cheque")
  32.   (log "Give cheque to reception")
  33.   (>!! s1 1)
  34.   (log "Wait for goods and warranty")
  35.   (<!! m7)
  36.   (end "Get goods and warranty"))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement