On Tue, Dec 23, 2008 at 11:32:00PM +0900, Robert Klemme wrote:
> t1 = Thread.new do
>   require 'a'
>   require 'b'
> 
>   # do all the work
> end
> 
> t2 = Thread.new do
>   require 'b'
>   require 'a' # different order for whatever reasons
> 
>   # do different work
> end

I see no deadlock here.  The lock is released as soon as each require
returns.

There is a deadlock if a.rb and b.rb are mutually dependent, but IMO
such a dependency is a bug.

Paul