Report abuse


			
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