## run_this.rb
module BarForTestRequireOnce; end

$foo = 0
BarForTestRequireOnce.autoload :Foo, "foo_for_test_autoload_once"
100.times do
results = []
(0...10).to_a.map do |x|
Thread.new {results[x] = BarForTestRequireOnce::Foo}
end.each {|t| t.join}
raise "Concurrent autoloads caused double-loading" if results != [1] * 10
$foo = 0
BarForTestRequireOnce.autoload :Foo, "foo_for_test_autoload_once"
$".pop
end
## foo_for_test_autoload_once.rb
sleep 0.05
$foo += 1
BarForTestRequireOnce::Foo = $foo