1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
prelude: | # two threads, one mutex benchmark: vm_thread_mutex2: | require 'thread' m = Thread::Mutex.new r = 0 max = 2000 lmax = (max * max)/2 (1..2).map{ Thread.new{ i = 0 while i<lmax i += 1 m.synchronize{ r += 1 } end } }.each{|e| e.join } raise r.to_s if r != max * max loop_count: 1