From: "Bartosz Dziewoński" Date: 2011-08-23T01:57:22+09:00 Subject: Re: Multithreading in Ruby 2011/8/22 Nabs Kahn : >  rank_page_extract = Thread.new do >    while rank_pages_download.alive? >      rank_page = rank_pages_queue.pop >      items_queue << get_rank_name_url(rank_page) >    end >  end All threads will be started at the same time, so when this runs for the first time, rank_pages_queue will still be ampty and the next line will probably raise an exception - which will silently disappear, as exceptions always do in threads. When debugging a threading program, always use Thread.abort_on_exception = true - this will generate the stack trace and barf every time a thread raises an exception.