Hello > I did try to use the Queue class, but it seemed a little magical and I > couldn't quite figure out how to use it for my needs. I unfortunately can't really where your deadlock comes from. But the Queue class is really simple: Just push elements onto the Queue in the filler class, and pop them from your workers... That's exactly what you need: class Filler def refill ary = [pull the feeds] for element in ar queue << element end sleep... end end class Worker def work while(a = queue.pop) get a... end end end And that's all. To finish, just push false into the queue once for every worker thread, to make sure they exit. Vince