mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
433af16167
benchmark/*.rb is only benchmarks now. We don't need prefixes. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63928 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
28 lines
476 B
Ruby
28 lines
476 B
Ruby
# two threads, two mutex, two condvar ping-pong
|
|
require 'thread'
|
|
m1 = Mutex.new
|
|
m2 = Mutex.new
|
|
cv1 = ConditionVariable.new
|
|
cv2 = ConditionVariable.new
|
|
max = 100000
|
|
i = 0
|
|
wait = nil
|
|
m2.synchronize do
|
|
wait = Thread.new do
|
|
m1.synchronize do
|
|
m2.synchronize { cv2.signal }
|
|
while (i += 1) < max
|
|
cv1.wait(m1)
|
|
cv2.signal
|
|
end
|
|
end
|
|
end
|
|
cv2.wait(m2)
|
|
end
|
|
m1.synchronize do
|
|
while i < max
|
|
cv1.signal
|
|
cv2.wait(m1)
|
|
end
|
|
end
|
|
wait.join
|