thread-ring Ruby #2 program
source code
# The Computer Language Benchmarks Game
# http://benchmarksgame.alioth.debian.org
#
# contributed by Serhiy Boiko
#require 'thread'
THREAD_NUM = 503
number = ARGV.first.to_i
threads = []
for i in 1..THREAD_NUM
threads << Thread.new(i) do |thr_num|
while true
Thread.stop
if number > 0
number -= 1
else
puts thr_num
exit 0
end
end
end
end
prev_thread = threads.last
while true
for thread in threads
Thread.pass until prev_thread.stop?
thread.run
prev_thread = thread
end
end
notes, command-line, and program output
NOTES:
64-bit Ubuntu quad core
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]
Tue, 02 Jan 2018 04:06:11 GMT
COMMAND LINE:
/opt/src/ruby-2.5.0/bin/ruby -W0 threadring.yarv-2.yarv 50000000
PROGRAM OUTPUT:
292