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