#!/usr/local/bin/ruby require 'reqnora' require 'web/persistent' n = (ARGV.shift || 1000).to_i m = (ARGV.shift || 10).to_i def countup(ps) ps.transaction { count = ps['count'] || 0 count = count + 1 ps['count'] = count } end # カウントクリア ps = Web::Persistent.new('counter') ps.transaction { ps['count'] = 0 } # 10プロセスで1000カウントする m.times do fork do ps = Web::Persistent.new('counter') n.times do countup(ps) end puts "done" end end m.times do Process.wait end ps = Web::Persistent.new('counter') ps.transaction { count = ps['count'] if count==m*n puts "OK: #{count}" else puts "NG: #{count}" end }