rubyとforkと変数…大域変数が作れない

rubycygwin上でもforkが平気で出来るまれな言語。

$ ruby -e 'fork{puts "child"}; puts "parent"'
parent
child
$ ruby -e 'fork{puts "child"}; Process.wait; puts "parent"'
child
parent

きちんとwaitも実装されている。

$ ruby -e 'fork{puts "1"};fork{puts "2"};fork{puts "3"};puts "0"'
1
2
0
3
$ ruby -e 'fork{puts "1"};fork{puts "2"};fork{puts "3"};Process.wait;puts "0"'
1
2
0
3
$ ruby -e 'fork{puts "1"};fork{puts "2"};fork{puts "3"};Process.waitall;puts "0"'
1
2
3
0

waitallもある。ブロックのようにforkできるのはおもしろい。
ところが大域変数がうまく作れない。

$ ruby -e 'a=2;fork{a+=2;puts "child:"+a.to_s}; Process.wait; puts "parent:"+a.to_s'
child:4
parent:2

どうする?