>> I know there is one in thread.rb that comes with the ruby distrobution 
>> but it uses critcal sections, which from reading Pickaxe can be dangerous.

Uh, you are confusing the problem.  Critical sections are nature in
multi-thread programming.  In Ruby, Queue class is as much a primitive
tool as Mutex class for inter-thread communication.  Rewriting the
Queue class using Mutex gains nothing, and probably it will become
slower.  (My experiment showed it's about ten times slower when
written using Mutex.  Though some optimization may be possible.)


						FUKUMOTO Atsushi
						fukumoto / imasy.or.jp