On 7/27/11 11:19 AM, Ken Wesson wrote:
On Wed, Jul 27, 2011 at 11:44 AM, mc4924<[email protected]>  wrote:
Hello everyone, I am a beginner with clojure and I am playing around
with pcalls (I am using clojure 1.2.1).
I see different behavior if I run some code from inside the REPL or
launching it "form the command line".

I have the following code in a file called "test-pcalls.clj":

(let [waste-time (fn [label]
                    (dotimes [k 4]
                      (let [msg (str label " " k "\n")]
                        (Thread/sleep 2000)
                        (print msg))))]
  (dorun (pcalls #(waste-time "A") #(waste-time "b"))))

This just creates the function 'waste-time' which slowly (2 seconds at
a time) counts 0..3 and prints a label and the count each time. Two
copies of the function are then started in parallel with a different
label ("A" and "b")

I start clojure and then from the REPL I do (load-file "test-
pcalls.clj").
After 8 seconds (2 seconds x 4) I see the two sequences being printed
out all in one go.
First question I cannot find an aswer is: why do I see everything
printed together instead of one step a time?
Buffering of I/O. Try using println, or adding (.flush *out*) after each print.

Then I exit to the command line and then start clojure with the source
file:
   clojure test-pcalls.clj
Again after 8 seconds I see the sequences printed out as above. But
now clojure hangs for a minute or so before returning to the command
prompt.
Can anyone explain this additional delay?
Waiting for the pcalls thread pool to shut down, I expect.

Yeah, you will want to call '(shutdown-agents)' to have Clojure shut down the thread pool it uses for agents, futures, etc..

-Ben

--
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

Reply via email to