1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/benchmark/bm_vm_thread_condvar1.rb
k0kubun 8068d34cfe Revert "benchmark/*.yml: convert from benchmark/bm_*.rb"
This reverts r63900.

Having single-execution benchmark as a normal Ruby script is preferred
by ko1. I'm not a big fan of having inconsistent benchmark formats, but
I can understand some benefits of it.

common.mk: remove obsolsted benchmark-each PHONY declaration, support
running Ruby scripts added by this commit.

README.md: follow ARGS change

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63926 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-07-10 13:05:29 +00:00

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