e$B1J0f!wCNG=!%6e9)Bg$G$9!%e(B
e$B$9$_$^$;$s$,!$#2E@<ALd$5$;$F$/$@$5$$!%e(B
e$B$^$:#1E@L$G$9!%e(B
—[e$B<ALd#1e(B]-----------------------------------------------------
C e$B8@8l$G=q$+$l$?4X?t$Ke(B “::AAA::BBB::CCC” e$B$H$$$&7A$Ge(B
e$BDj?te(B/e$B%/%i%9e(B/e$B%b%8%e!<%k$N%Q%9J8;zNs$,EO$5$l$?;~!$e(B
e$BBP>]$H$J$k%*%V%8%’%/%H$rF@$k$?$a$NDc%3%9%H$J<BAu$Oe(B
e$B$I$N$h$&$K=q$/$Y$-$G$7$g$&$+!%e(B
e$B$?$@$7!$BP>]$H$J$k%%V%8%’%/%H$O$3$N8!:w$N:]$Ke(B
autoload e$B$GFI$9~$^$l$k2DG=@-$,$"$k$?$a!$e(B
autoload e$B$N5!9=$O$-$A$s$HF/$/I,MW$,$"$j$^$9!%e(B
e$B$^$?!$Dj?t$,B8:$7$J$$$J$I$NNc30$bJaB$;$M$P$J$j$^$;$s!%e(B
e$BC1=c$JJ}K!$J$i!$e(Brb_eval_string_protect(str, &state) e$B$+$J$H$Oe(B
e$B;W$&$N$G$9$,!%!%!%e(B
e$B<!$K#2E@L$G$9!%e(B
—[e$B<ALd#2e(B]-----------------------------------------------------
thread A e$B$+$ie(B thread B e$B$K=hM}$r0MMj$7!$$=$N7k2L$re(B thread A
e$B$Ge(B
e$B<u$1<h$j$?$$$H$$$&>l9g$K$D$$$F$G$9!%e(B
thread B e$B$OJ#?t$Ne(B thread e$B$+$i$N0MMj$r<u$1IU$1$k$?$a!$e(B
thread A e$B$+$i$N0MMj$r=hM}$7$?8e$OB.$d$+$KJL$N0MMj$re(B
e$B=hM}$9$kI,MW$,$"$j$^$9!%e(B
e$B$^$?!$e(Bthread B e$B$K$Oe(B local e$B$K=hM}$9$Y$-;E;ve(B
(e$B%"%W%j%1!<%7%g%sA4BN$G8+$F$bHf3SE*M%@h=g0L$,9b$$e(B)
e$B$b$"$j$^$9!%e(B
e$B$3$N$h$&$J>l9g$N<B9T%3%9%H$r$&$^$/Dc8:$7$F!$e(B
e$B%"%W%j%1!<%7%g%sA4BN$NB.EYDc2<$rM^$($k$?$a$Ne(B
e$B$&$^$$J}K!$O$J$$$G$7$g$&$+!%e(B
thread e$B@Z$jBX$($NIQEY$r2<$2$k$H!$e(B
e$B=hM}0MMj$KBP$9$kBT$A;~4V$,A}2C$7$FDcB.2=$7$^$9!%e(B
e$B$+$H$$$C$F!$IQEY$r>e$2$k$He(B thread e$B@Z$jBX$($N%3%9%H$,Bg$-$/$Fe(B
e$BCY$/$J$C$F$7$^$$$^$9!%e(B
thread B e$B$K$OM%@h=g0L$,9b$a$Ne(B local e$B$N;E;v$O$"$j$^$9$,!$e(B
e$B=hM}$N$J$$!V2K!W$J;~4V$bIQHK$KH/@8$7$^$9!%e(B
e$B$7$+$7$=$NEY$KB>$Ne(B thread e$B$K=hM}$r>y$C$F$7$^$&$H!$e(B
e$BM%@h=g0L$,9b$a$Ne(B local e$B$N;E;v$X$N1~Ez@-$,Dc2<$7!$e(B
e$B%"%W%j%1!<%7%g%sA4BN$NF0:n$,F_$/$J$C$F$7$^$$$^$9!%e(B
e$B$J$*!$e(Blocal e$B$N;E;v$,H/@8$7$?$+$I$&$+$re(B
e$B30It$+$i%b%K%?!<$9$k$3$H$O$G$-$^$;$s!%e(B
Ruby e$B$,e(B Giant Lock e$B$G$Ne(B thread
e$B@Z$jBX$(F0:n$G$"$k0J>e$O!$e(B
e$B$3$&$7$?B.EYDc2<$OHr$1$h$&$,$J$$$3$H$J$N$G$7$g$&$+!%e(B
e$B$3$N#2E@L$O!$$4A[A|$NDL$j!$e(BRuby/Tk e$B$Ne(B eventloop
e$B$N=hM}$NOC$G$9!%e(B
e$B$"$k%9%/%j%W%H$N<B9T4D6-$rJq$_9~$`$?$a$Ke(B
thread e$B$G$/$k$s$G<B9T$9$k$h$&$K$7$?>l9g!$e(B
eventloop e$B$Ne(B thread e$B$H$N4V$K7c$7$$%a%C%;!<%8$N1~=7$,9T$o$l$Fe(B
e$BL$K8+$($F=hM}B.EY$,Dc2<$7$F$7$^$$$^$9!%e(B
GUI e$B$N9=C[$N:]$K$O!$0MMj"*LaCM<u$1<h$j"*LaCM$K4p$E$$$F$N0MMje(B
e$B$H$$$&$N$,IQHK$K9T$o$l$k$?$a$K82Cx$KCY$/$J$j$^$9!%e(B
GUI e$B$N9=C[$,40N;$7$F$7$^$($P!$DL>o$O%9%/%j%W%HB&$+$i$Ne(B
e$B=hM}0MMj$O7c8:$9$k$N$G!$B.EYDc2<$O$[$\LdBj$K$J$i$J$$$h$&$G$9!%e(B
e$B8=:$Ne(B eventloop e$B$G$O!$O"B3=hM}?te(B
(e$B=hM}$,$J$$;~$K$OB?$/A}2C$5$;$ke(B) e$B$He(B
e$B%?%$%^!<$H$NAH9g$o$;$G!$@Z$jBX$($N%?%$%%s%0$re(B
e$B%9%/%j%W%H$+$i$"$kDxEY%3%s%H%m!<%k$G$-$k$h$&$K$O$7$F$$$^$9$,!$e(B
e$B$I$N$h$&$JCM$K$9$Y$-$+$N:,5r$,$"$k$o$1$G$b$J$/!$e(B
e$B>lEv$?$jE*$JBP1~$K2a$.$J$$$3$H$,5$$K$J$C$F$$$^$9!%e(B
e$B$G$9$N$G!$!V$=$&$7$?>l9g$O$3$&$9$Y$-!W$H$$$&$N$,$"$l$Pe(B
e$B$<$R65$($r@A$$$?$$$H;W$C$F$$$^$9!%e(B
e$B$h$m$7$/$*4j$$$7$^$9!%e(B