require "thread"
Thread.abort_on_exception = true
module Kernel
alias unsafe_require require
@@__require_mutex = Mutex.new
def require(*args)
@@__require_mutex.synchronize do
unsafe_require(*args)
end
end
end
t1 = Thread.new do
require "foo"
Foo.new
end
t2 = Thread.new do
require "foo"
Foo.new
end
t1.join; t2.join