gdbm:排他制御

http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=gdbm
以下スクリプトを複数プロセスで実行。 

require 'gdbm'

GDBM.open('dbfile') do |hash|
  for i in (10..20)
    hash[i.to_s] = (i * i).to_s
    sleep 10
  end
end

片方はエラー。


ex_gdbm.rb:3:in `open': ブロック不可のソケット操作をすぐに完了できませんでした。 - dbfile (Errno::EWOULDBLOCK)

GDBM自身の排他制御は非ブロック…っと。