Hey,

I was using seque with a BlockingQueue instead of an integer, when I noticed it 
does not work for PriorityBlockingQueue and SynchronousQueue.

I submitted a bug[1] and started a new implementation[2] to work around the 
problems, but there is a whole concurrency jungle out there as soon as you 
leave persistent data structures  behind.

So the thing is, poll, peek and locking do not work for SynchronousQueue and 
poisoning the queue does not work for PriorityBlockingQueue because the sorting 
going on.

I'm currently interrupting the consumer when we're done, like here[3]. It works 
most of the time, but sometimes it still hangs. I checked that interrupting 
works when it happens before as well as during the .take, so I can't see how it 
would hang.

I could really use some help making this work, because I'm stuck and out of 
ideas.

I devised this form to test it repeatedly and manually (.interrupt cur) later.

(future (def cur (Thread/currentThread)) (reduce (partial merge-with +) (map 
#(dissoc % :type) (repeatedly 100 #(run-tests 'test)))))

[1] http://dev.clojure.org/jira/browse/CLJ-776
[2] https://gist.github.com/934781
[3] http://stackoverflow.com/questions/5378391/closing-a-blocking-queue

Groeten,
Pepijn de Vos
--
Sent from my iPod Shuffle
http://pepijndevos.nl

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to