Hello,
I tried to call an agent inside a dosync and wait on a Java semaphore
for its completion.
[I tried clojure's await but that gave nasty exceptions]
Can anyone explain, why wait-for-agent works as I expected while the
code in wait-for-agent/dosync seems to block ?
Regards
(defn awake [_ semaphore]
(println "Release semaphore")
(.release semaphore)
_)
(defn wait-for-agent []
(let [a (agent :void)
sema (java.util.concurrent.Semaphore. 0)]
(println "Wait for agent")
(send a awake sema)
(.acquire sema)
(println "Ready")))
(defn wait-for-agent/dosync []
(let [a (agent :void)
sema (java.util.concurrent.Semaphore. 0)]
(dosync
(println "Wait for agent")
(send a awake sema)
(.acquire sema)
(println "Ready"))))
(wait-for-agent)
(wait-for-agent/dosync)
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en