e$B$3$s$P$s$O!"e(Bsheepman e$B$G$9!#e(B
e$B:Y$+$$OC$G$9$,!#7k2LE*$K%a%$%s%9%l%C%I$@$1$,e(B Thread.stop
e$B$7$F$$$k>uBV$Ke(B
e$B$J$C$?;~$K!“e(Bdeadlock
e$B$NNc30$,H/@8$7$J$$$N$O$=$&$$$&$b$N$J$N$G$7$g$&$+!#e(B
e$B%a%$%s%9%l%C%I0J30$Ke(B Thread.stop
e$B$7$F$$$k%9%l%C%I$,$b$&$R$H$D$”$C$?>l9g$O!"e(B
deadlock e$B$NNc30$,H/@8$7$^$9!#e(B
e$B2?$+8!=P$9$k%G%C%I%m%C%/$N4p=`$_$?$$$J$b$N$O$"$k$N$G$7$g$&$+!#$"$l$P%j%U%!%l%s%9$Ke(B
e$B=q$-B-$7$F$*$-$^$9!#e(B
$ cat dlck2.rb
Thread.new do
sleep 1
end
sleep 0.1
Thread.stop
$ ruby-1.8 -v dlck2.rb
ruby 1.8.6 (2007-06-18 patchlevel 5000) [i686-linux]
(e$B%G%C%I%m%C%/H/@8e(B)
$ cat dlck3.rb
Thread.new do
sleep 1
p 3
end
Thread.new do
sleep 0.1
p 1
Thread.stop
end
sleep 0.5
p 2
Thread.stop
$ ruby-1.8 -v dlck3.rb
ruby 1.8.6 (2007-06-18 patchlevel 5000) [i686-linux]
1
2
3
deadlock 0x4022e6fc: sleep:- (main) - dlck3.rb:14
deadlock 0x40221830: sleep:- - dlck3.rb:9
dlck3.rb:1: Thread(0x40221894): deadlock (fatal)