flockを使ってブロッキング。
require 'gdbm' wait = ARGV[0] def gdbm_write(k, v) puts "#{k}=>#{v}" open('lock', 'a') {|f| f.flock(File::LOCK_EX) GDBM.open('dbfile') {|hash| hash[k.to_s] = v.to_s sleep 3 } } end (10..20).each {|i| gdbm_write(i, i*i) }
flockを使ってブロッキング。
require 'gdbm' wait = ARGV[0] def gdbm_write(k, v) puts "#{k}=>#{v}" open('lock', 'a') {|f| f.flock(File::LOCK_EX) GDBM.open('dbfile') {|hash| hash[k.to_s] = v.to_s sleep 3 } } end (10..20).each {|i| gdbm_write(i, i*i) }