YARV $B$N(B thread $B$K$D$$$F(B

e$B1J0f!wCNG=!%6e9)Bg$G$9!%e(B

Ruby/Tk e$B$Ne(B YARV e$BBP1~$G$9$,!$e(Btcltklib.c e$B$K$*$1$ke(B Tcl/Tk
wrapper e$B$Ne(B
e$B:,K$N@oN,$+$i$7$F:n$jD>$5$M$P$J$i$J$$$h$&$G$9!%e(B

e$B$G!$$I$N$h$&$K$9$Y$-$+H=CG$9$k>e$G!$e(BYARV e$B$G$Ne(B thread
e$B$K$D$$$Fe(B
e$B>/$73NG’$H<ALd$r$5$;$F$$$?$@$-$?$$$H;W$$$^$9!%e(B

  • e$B8=:_$Ne(B YARV e$B$Oe(B Thread model 2
    e$B$G$"$j!$$"$k;~E@$G2TF/>uBV$K$"$ke(B
    thread e$B$O0l$D$@$1$H$$$&$3$H$G$9$h$M!)e(B

  • e$B>e5-$,@5$7$$$H$7$F!$>-Mh!$e(BThread model 1 e$B$de(B 3
    e$B$,:n$j9~$^$l$k$3$H$Oe(B
    e$B$I$NDxEYA[Dj$7$F$$1$PNI$$$G$7$g$&$+!)e(B
    e$B!J!VHf3SE
    6a$$>-Mh$K!W$H$+!$!VEvLL$OM=Dj$,$J$$!W$H$+!%!%!%!Ke(B

  • e$B8=:_$Ne(B YARV e$B$G$O$9$Y$F$Ne(B thread e$B$,I,$:0l$D$Ne(B native
    thread e$B$Ke(B
    e$BBP1~$9$k$H$$$&$3$H$G$h$m$7$$$G$7$g$&$+!)e(B

  • e$BAH$_9~$`%i%$%V%i%jB&$G?7$?$Je(B native thread
    e$B$,:n@.$5$l$?>l9g!$e(B
    e$B$=$Ne(B native thread e$B$+$ie(B Ruby
    e$B$r8F$V$3$H$O2DG=$G$9$+!)e(B
    e$BIT2DG=$G$O$J$$>l9g!$$I$N$h$&$J=hM}$r@h$K8F$s$G$*$/I,MW$,$"$j$^$9$+!)e(B

  • e$B%i%$%V%i%jB&$G:n@.$5$l$?e(B native thread
    e$B$,JBNsF0:n$r$7$h$&$H$9$k>l9g!$e(B
    e$BCm0U$9$Y$-$3$H$O$I$N$h$&$J$3$H$G$7$g$&$+!)e(B
    e$B!Je(BThread e$B%%V%8%’%/%H$H$7$F$N4IM}30$J$N$G!$e(BRuby
    e$BB&$N%j%=!<%9$Ke(B
    e$B?($l$J$$8B$j$OLdBj$J$7$@$H$+!$Ak8}e(B thread
    e$B$r0l$DMQ0U$7$Fe(B
    e$B$=$l$r7PM3$9$k$h$&$K$7$J$1$l$P$J$i$J$$$H$+!$e(B
    e$B$3$l$3$l$KCm0U$7$J$$$H$
    $+$7$J$3$H$K$J$k$H$+!%!%!%!Ke(B

  • Thread model 2 e$B$N>l9g!$e(Bthread
    e$B@Z$jBX$($N%?%$%_%s%0%3%s%H%m!<%k$O!$e(B
    e$B$3$l$^$G$HF1MM!$$"$k0lDj$N=hM}e(B (YARV_CHECK_INTS()?)
    e$B$,8F$P$l$?:]$Ke(B
    e$B@Z$jBX$o$k$H$$$&9M$(J}$G$h$$$N$G$7$g$&$+!)e(B
    e$B$=$N>l9g!$%i%$%V%i%jB&$G$O$I$N=hM}$r8F$Y$PNI$$$N$G$7$g$&$+!)e(B
    yarvcore.h e$B$re(B include e$B$7$Fe(B YARV_CHECK_INTS()
    e$B$r8F$V$H$$$&$3$H$Ke(B
    e$B$J$k$N$G$7$g$&$+!)e(B

  • e$B=>Mh$Ne(B thread
    e$B$O@Z$jBX$($N%3%9%H$,$+$J$jBg$-$+$C$?$o$1$G$9$,!$e(B
    YARV e$B$G$O$I$NDxEY$G$7$g$&$+!)e(B
    e$BNc$($P!$e(BTk e$B$N=hM}BT$A%$%Y%s%H$,B8:$7$J$1$l$P>o$KB(:B$Ke(B
    thread e$B$re(B
    e$B@Z$jBX$($F$bLdBj$J$$$+!$$=$l$H$b@Z$jBX$($,IQHK$@$H:$$k$N$Ge(B
    e$B>/$7$N4V%$%Y%s%HBT$A$r;n$
    $F$+$i@Z$jBX$($k$h$&$K$9$Y$-$+$J$I$G$9!%e(B

e$B!!$5$5$@$G$9!#e(B

Hidetoshi NAGAI wrote:

Ruby/Tk e$B$Ne(B YARV e$BBP1~$G$9$,!$e(Btcltklib.c e$B$K$*$1$ke(B Tcl/Tk wrapper e$B$Ne(B
e$B:,K$N@oN,$+$i$7$F:n$jD>$5$M$P$J$i$J$$$h$&$G$9!%e(B

e$B$G!$$I$N$h$&$K$9$Y$-$+H=CG$9$k>e$G!$e(BYARV e$B$G$Ne(B thread e$B$K$D$$$Fe(B
e$B>/$73NG’$H<ALd$r$5$;$F$$$?$@$-$?$$$H;W$$$^$9!%e(B

e$B!!<ALd$r$^$H$a$F$/$@$5$C$F$"$j$,$H$&$4$6$$$^$9!#e(B


  • e$B8=:_$Ne(B YARV e$B$Oe(B Thread model 2 e$B$G$"$j!$$"$k;~E@$G2TF/>uBV$K$"$ke(B
    thread e$B$O0l$D$@$1$H$$$&$3$H$G$9$h$M!)e(B

e$B!!$O$$!#e(B

  • e$B>e5-$,@5$7$$$H$7$F!$>-Mh!$e(BThread model 1 e$B$de(B 3 e$B$,:n$j9~$^$l$k$3$H$Oe(B
    e$B$I$NDxEYA[Dj$7$F$$1$PNI$$$G$7$g$&$+!)e(B
    e$B!J!VHf3SE
    6a$$>-Mh$K!W$H$+!$!VEvLL$OM=Dj$,$J$$!W$H$+!%!%!%!Ke(B

e$B!!0l1~!“e(Bmodel 3
e$B$K$D$$$F$O;n:n$7$?$b$N$,$”$j$^$9!#$"$H$O3005!J$d$C$Q$jJBe(B
e$BNs$KF0$+$J$$$H$J$!!"$H$+!K$H3’$N$d$k5$!J0l?M$G$d$k$K$O$A$g$C$H$D$i$$!K$de(B
e$B%j%=!<%9!J$I$C$+$N2q<R$K$h$C$F<h$jAH$`$H$+!K$K$h$k$+$H;W$$$^$9!#e(B

e$B!!e(Bmodel 1
e$B$O!"$3$l$b3005!J%M%$%F%#%V%9%l%C%I$&$<!<$h!*!!$H$$$&@<!K$K$h$ke(B
e$B$+$H;W$$$^$9!#$3$C$A$O8=:_$b=PMh$F$$$k$3$H$+$i!"$b$7$+$7$?$i>/$7$,$s$P$le(B
e$B$PBP1~$G$-$k$+$b!"$H$$$&$H$3$m$G$9!#e(B

  • e$B8=:_$Ne(B YARV e$B$G$O$9$Y$F$Ne(B thread e$B$,I,$:0l$D$Ne(B native thread e$B$Ke(B
    e$BBP1~$9$k$H$$$&$3$H$G$h$m$7$$$G$7$g$&$+!)e(B

e$B!!$O$$!#e(B

  • e$BAH$_9~$`%i%$%V%i%jB&$G?7$?$Je(B native thread e$B$,:n@.$5$l$?>l9g!$e(B
    e$B$=$Ne(B native thread e$B$+$ie(B Ruby e$B$r8F$V$3$H$O2DG=$G$9$+!)e(B
    e$BIT2DG=$G$O$J$$>l9g!$$I$N$h$&$J=hM}$r@h$K8F$s$G$*$/I,MW$,$"$j$^$9$+!)e(B

e$B!!8=>u$G$OIT2DG=$G$9!#e(B

e$B!!$"$s$^$jBP:v$O9M$($F$$$J$$$s$G$9$,!"$=$&$$$&e(B API
e$B$rMQ0U$9$k$3$H$O2DG=e(B
e$B$G$9!#$=$N:]$O!"$A$g$C$HLLE]$J@)Ls$,F~$k$+$b$7$l$^$;$s!#e(B

  • e$B%i%$%V%i%jB&$G:n@.$5$l$?e(B native thread e$B$,JBNsF0:n$r$7$h$&$H$9$k>l9g!$e(B
    e$BCm0U$9$Y$-$3$H$O$I$N$h$&$J$3$H$G$7$g$&$+!)e(B
    e$B!Je(BThread e$B%%V%8%’%/%H$H$7$F$N4IM}30$J$N$G!$e(BRuby e$BB&$N%j%=!<%9$Ke(B
    e$B?($l$J$$8B$j$OLdBj$J$7$@$H$+!$Ak8}e(B thread e$B$r0l$DMQ0U$7$Fe(B
    e$B$=$l$r7PM3$9$k$h$&$K$7$J$1$l$P$J$i$J$$$H$+!$e(B
    e$B$3$l$3$l$KCm0U$7$J$$$H$
    $+$7$J$3$H$K$J$k$H$+!%!%!%!Ke(B

e$B!!e(BRubye$BB&%j%=!<%9$K?($l$J$$8B$j$OBg>fIW$@$H;W$$$^$9!#$?$H$($P!“C<E*$JNc$re(B
e$B8@$&$H!“4I3m30%M%$%F%#%V%9%l%C%I$N%^%7%s%9%?%C%/$Oe(BGCe$BBP>]$G$O$”$j$^$;$s!#e(B
e$BAk8}e(BRubye$B%9%l%C%I$r$R$H$DMQ0U$9$k$N$,3Z$J$N$G$O$J$$$+$J$!!”$H;W$$$^$9!#e(B

  • Thread model 2 e$B$N>l9g!$e(Bthread e$B@Z$jBX$($N%?%$%_%s%0%3%s%H%m!<%k$O!$e(B
    e$B$3$l$^$G$HF1MM!$$"$k0lDj$N=hM}e(B (YARV_CHECK_INTS()?) e$B$,8F$P$l$?:]$Ke(B
    e$B@Z$jBX$o$k$H$$$&9M$(J}$G$h$$$N$G$7$g$&$+!)e(B

e$B!!$=$&$G$9!#e(B

e$B$=$N>l9g!$%i%$%V%i%jB&$G$O$I$N=hM}$r8F$Y$PNI$$$N$G$7$g$&$+!)e(B
yarvcore.h e$B$re(B include e$B$7$Fe(B YARV_CHECK_INTS() e$B$r8F$V$H$$$&$3$H$Ke(B
e$B$J$k$N$G$7$g$&$+!)e(B

e$B!!%i%$%V%i%jB&$G!V%9%l%C%I@Z$jBX$($rH/@8$5$;$k$K$O!W2?$r8F$Y$P$$$$$+!"$Ge(B
e$B$9$+$M!#e(Brb_thread_schedule()
e$B$r8F$V$H!"$H$j$"$($:@Z$jBX$($F$/$l$^$9!#e(B
e$B$,!“e(Bruby
e$B%3!<%I$,Av$k%?%$%_%s%0$GDj4|E*$K@Z$jBX$(=hM}$,Av$k$N$G!”$"$s$^e(B
e$B$jI,MW$O$J$$$+$b$7$l$^$;$s!#%i%$%V%i%jB&$GD9;~4V%V%m%C%/$7$F$7$^$&:]$K$Oe(B
e$BI,MW$,$"$k$+$b$7$l$^$;$s!#e(B

  • e$B=>Mh$Ne(B thread e$B$O@Z$jBX$($N%3%9%H$,$+$J$jBg$-$+$C$?$o$1$G$9$,!$e(B
    YARV e$B$G$O$I$NDxEY$G$7$g$&$+!)e(B
    e$BNc$($P!$e(BTk e$B$N=hM}BT$A%$%Y%s%H$,B8:$7$J$1$l$P>o$KB(:B$Ke(B thread e$B$re(B
    e$B@Z$jBX$($F$bLdBj$J$$$+!$$=$l$H$b@Z$jBX$($,IQHK$@$H:$$k$N$Ge(B
    e$B>/$7$N4V%$%Y%s%HBT$A$r;n$
    $F$+$i@Z$jBX$($k$h$&$K$9$Y$-$+$J$I$G$9!%e(B

e$B!!@Z$jBX$($N%3%9%H$Oe(B OS
e$B$d%7%9%F%`%=%U%H%&%’%"$K$h$j$^$9!#$D$^$j!"%M%$e(B
e$B%F%#%V%9%l%C%I=hM}5!9=$N%9%l%C%I@Z$jBX$($N@-G=$K$h$j$^$9!#7P83E*$K$O!"=>e(B
e$BMh$Ne(BRubye$B$N%9%l%C%I@Z$jBX$($h$j$b?oJ,$H9bB.$K$J$C$F$$$^$9!#e(B

e$B!!$H$/$K!"=>Mh$Ne(BRubye$B=hM}7O$O%9%?%C%/$N%3%T!<$,H/@8$9$k$?$a!"%9%?%C%/$N?<e(B
e$B$5$KHfNc$7$?@Z$jBX$(;~4V$,I,MW$G$7$?$,!"e(BYARVe$B$G$ODj?t;~4V$G%9%l%C%I@Z$jBXe(B
e$B$($r9T$&$3$H$,4|BT$G$-$^$9!#e(B

e$B!V<ALd$N;EJ}$,0-$/$F0UL#$,$o$+$i$J$$!W$H$$$&>l9g$O$*?R$M2<$5$$!%e(B
e$B$^$H$^$j$,$J$/$F?=$7Lu$"$j$^$;$s$,!$$h$m$7$/$*4j$$CW$7$^$9!%e(B

e$B!!$$$d!"BgJQEz$($d$9$+$C$?$G$9!#F|K\8l$@$7e(B ^^;

e$B!!$^$?2?$+$"$l$P$4<ALd$/$@$5$$!#e(B

e$B1J0f!wCNG=!%6e9)Bg$G$9!%e(B

e$B2sEz$r$"$j$,$H$&$4$6$$$^$9!%e(B

From: SASADA Koichi [email protected]
Subject: [ruby-dev:30202] Re: YARV e$B$Ne(B thread e$B$K$D$$$Fe(B
Date: Mon, 29 Jan 2007 10:27:56 +0900
Message-ID: [email protected]

e$B!!0l1~!“e(Bmodel 3 e$B$K$D$$$F$O;n:n$7$?$b$N$,$”$j$^$9!#$“$H$O3005!J$d$C$Q$jJBe(B
e$BNs$KF0$+$J$$$H$J$!!”$H$+!K$H3’$N$d$k5$!J0l?M$G$d$k$K$O$A$g$C$H$D$i$$!K$de(B
e$B%j%=!<%9!J$I$C$+$N2q<R$K$h$C$F<h$jAH$`$H$+!K$K$h$k$+$H;W$$$^$9!#e(B

e$B!!e(Bmodel 1 e$B$O!“$3$l$b3005!J%M%$%F%#%V%9%l%C%I$&$<!<$h!*!!$H$$$&@<!K$K$h$ke(B
e$B$+$H;W$$$^$9!#$3$C$A$O8=:_$b=PMh$F$$$k$3$H$+$i!”$b$7$+$7$?$i>/$7$,$s$P$le(B
e$B$PBP1~$G$-$k$+$b!"$H$$$&$H$3$m$G$9!#e(B

model 1 e$B$O$3$l$^$G$Ne(B Ruby e$B$Ne(B thread e$B$H$[$\F1$8$He(B
e$B9M$($F$h$$$N$G$9$h$M!)e(B

e$B%3%s%Q%$%k;~$K!$;XDj$5$l$?e(B Thread model e$B$,$I$l$G$"$k$+$re(B
e$BH=Dj$9$k%^%/%mDj?t$OMQ0U$5$l$^$9$+!)e(B
e$B$G$-$l$P%9%/%j%W%H$+$i$be(B Thread model e$B$N3NG’$,$G$-$?J}$,e(B
e$B4r$7$$$N$G$9$,!%!%!%e(B

tcltklib e$B$N>l9g!$e(Bmodel 1

e$B$G$"$l$P=>Mh$N@oN,$r<h$i$M$P$J$i$J$$$7!$e(B

model 2 or 3 e$B$G$"$l$P?7$7$$@oN,$r$H$i$M$P$J$i$J$$$b$N$G!%e(B

  • e$B%i%$%V%i%jB&$G:n@.$5$l$?e(B native thread e$B$,JBNsF0:n$r$7$h$&$H$9$k>l9g!$e(B
    e$BCm0U$9$Y$-$3$H$O$I$N$h$&$J$3$H$G$7$g$&$+!)e(B
    e$B!Je(BThread e$B%%V%8%'%/%H$H$7$F$N4IM}30$J$N$G!$e(BRuby e$BB&$N%j%=!<%9$Ke(B
    e$B?($l$J$$8B$j$OLdBj$J$7$@$H$+!$Ak8}e(B thread e$B$r0l$DMQ0U$7$Fe(B
    e$B$=$l$r7PM3$9$k$h$&$K$7$J$1$l$P$J$i$J$$$H$+!$e(B
    e$B$3$l$3$l$KCm0U$7$J$$$H$
    $+$7$J$3$H$K$J$k$H$+!%!%!%!Ke(B

e$B!!e(BRubye$BB&%j%=!<%9$K?($l$J$$8B$j$OBg>fIW$@$H;W$$$^$9!#$?$H$($P!“C<E*$JNc$re(B
e$B8@$&$H!“4I3m30%M%$%F%#%V%9%l%C%I$N%^%7%s%9%?%C%/$Oe(BGCe$BBP>]$G$O$”$j$^$;$s!#e(B
e$BAk8}e(BRubye$B%9%l%C%I$r$R$H$DMQ0U$9$k$N$,3Z$J$N$G$O$J$$$+$J$!!”$H;W$$$^$9!#e(B

e$B$=$&$&$^$/JRIU$$$F$/$l$l$P$$$$$N$G$9$,e(B (^_^;e$B!$e(B
Tk e$BB&$+$i$N%3!<%k%P%C%/=hM}$NCf$G$5$i$Ke(B Tk
e$BB&$r8F$S=P$9%1!<%9$J$I$Ge(B
e$B$d$C$+$$$J$3$H$K$J$j$=$&$G$9!%e(B

Tk e$B$OFCDj$Ne(B native thread e$B$G$7$+2TF/$7$^$;$s$+$ie(B
(e$B$G$be(B Tcl e$B%Q!<%H$Oe(B native thread e$B$N@8@.$b$G$-$l$Pe(B
e$BJBNs<B9T$b9T$o$l$k2DG=@-$,$“$ke(B)e$B!$e(B
e$BJL$Ne(B native thread e$B$+$iA`:n$7$?$$>l9g$Oe(B
Tk e$B$Ne(B native thread e$B$Ne(B event queue
e$B$KAw$j9~$s$GBT$A$KF~$j!$e(B
e$B=hM}7k2L$rAw$jJV$7$F$b$i$C$?8e$KI|5”$J$I$H$9$k$3$H$K$J$k$H;W$$$^$9!%e(B
e$B$D$^$j!$e(BTk e$B$Ne(B native thread e$B$Ne(B event loop
e$B$NDd;_$O876X$G$9!%e(B

Tk e$B$Ne(B native thread e$B>e$G%3!<%k%P%C%/=hM}$,<B9T$5$l!$e(B
Ruby e$BB&$N=hM}$r4^$a$F0l$D$Ne(B native thread
e$B>e$G407k$9$l$P$$$$$N$G$9$,!$e(B
e$B$b$7%3!<%k%P%C%/=hM}$KJLe(B thread e$B$,4X$o$C$F!VBT$A!W$N>uBV$,e(B
e$B@8$8$F$7$^$&$H8G$^$C$F$7$^$$$^$9!%e(B

e$B$3$l$^$G$O%P%C%/%"%C%W$H$J$ke(B event loop e$B$rJLe(B thread
e$B$K:n$C$Fe(B
e$BBP=h$7$F$$$?$N$G$9$,!$:#2s$O$3$N<j$,;H$($J$$$N$Ge(B
e$B$I$&$7$h$&$+$J$!$H!%!%!%e(B

e$B$=$N>l9g!$%i%$%V%i%jB&$G$O$I$N=hM}$r8F$Y$PNI$$$N$G$7$g$&$+!)e(B
yarvcore.h e$B$re(B include e$B$7$Fe(B YARV_CHECK_INTS() e$B$r8F$V$H$$$&$3$H$Ke(B
e$B$J$k$N$G$7$g$&$+!)e(B

e$B!!%i%$%V%i%jB&$G!V%9%l%C%I@Z$jBX$($rH/@8$5$;$k$K$O!W2?$r8F$Y$P$$$$$+!“$Ge(B
e$B$9$+$M!#e(Brb_thread_schedule() e$B$r8F$V$H!”$H$j$“$($:@Z$jBX$($F$/$l$^$9!#e(B
e$B$,!“e(Bruby e$B%3!<%I$,Av$k%?%$%_%s%0$GDj4|E*$K@Z$jBX$(=hM}$,Av$k$N$G!”$”$s$^e(B
e$B$jI,MW$O$J$$$+$b$7$l$^$;$s!#%i%$%V%i%jB&$GD9;~4V%V%m%C%/$7$F$7$^$&:]$K$Oe(B
e$BI,MW$,$"$k$+$b$7$l$^$;$s!#e(B

Tk e$B$Ne(B event loop e$B$+$iB>$Ne(B thread
e$B$X$N@Z$jBX$($N$?$a$KI,MW$G$9!%e(B

mode 3 e$B$G$Oe(B OS e$B$Ne(B native thread

e$B@Z$jBX$($KG$$;$-$k$N$Ge(B

e$B%3%s%H%m!<%k$NI,MW$O$J$$e(B (e$B$G$-$J$$e(B)

e$B$H$$$&G’<1$G$$$$$N$G$9$h$M!)e(B

e$B5-210c$$$G$J$1$l$P!$=>Mh$Ne(B CHECK_INTS() e$B$Oe(B
e$BCY1d=hM}$5$l$F$$$?3d$j9~$=hM}$N<B9T$bF1;~$K9T$&$b$N$@$C$?$H;W$$$^$9$,!$e(B
YARV e$B$G$Oe(B rb_thread_schedule() e$B$N8F$S=P$7$@$1$G==J,$G!$e(B
e$B3d$j9~$
=hM}$NJ}$O5$$K$7$J$/$F$bNI$$$N$G$7$g$&$+!)e(B

e$B!!@Z$jBX$($N%3%9%H$Oe(B OS e$B$d%7%9%F%`%=%U%H%&%'%“$K$h$j$^$9!#$D$^$j!”%M%$e(B
e$B%F%#%V%9%l%C%I=hM}5!9=$N%9%l%C%I@Z$jBX$($N@-G=$K$h$j$^$9!#7P83E*$K$O!"=>e(B
e$BMh$Ne(BRubye$B$N%9%l%C%I@Z$jBX$($h$j$b?oJ,$H9bB.$K$J$C$F$$$^$9!#e(B

e$B!!$H$/$K!“=>Mh$Ne(BRubye$B=hM}7O$O%9%?%C%/$N%3%T!<$,H/@8$9$k$?$a!”%9%?%C%/$N?<e(B
e$B$5$KHfNc$7$?@Z$jBX$(;~4V$,I,MW$G$7$?$,!"e(BYARVe$B$G$ODj?t;~4V$G%9%l%C%I@Z$jBXe(B
e$B$($r9T$&$3$H$,4|BT$G$-$^$9!#e(B

e$B=>Mh$[$I$K$O5$$K$9$kI,MW$O$J$$$1$l$I$b!$e(BThread model 2
e$B$N>l9g$O!$e(B
e$BG0$N$?$a$KD4@0%Q%i%a!<%?$OMQ0U$7$F$*$$$?J}$,NI$$$H$$$&$3$H$N$h$&$G$9$M!%e(B

e$B!!$5$5$@$G$9!%e(B

Hidetoshi NAGAI wrote:

model 1 e$B$O$3$l$^$G$Ne(B Ruby e$B$Ne(B thread e$B$H$[$\F1$8$He(B
e$B9M$($F$h$$$N$G$9$h$M!)e(B

e$B!!$O$$!%$^$@1F$b7A$b$J$$$N$G$O$C$-$j$O$$$($J$$$s$G$9$,!%e(B

e$B%3%s%Q%$%k;~$K!$;XDj$5$l$?e(B Thread model e$B$,$I$l$G$"$k$+$re(B
e$BH=Dj$9$k%^%/%mDj?t$OMQ0U$5$l$^$9$+!)e(B
e$B$G$-$l$P%9%/%j%W%H$+$i$be(B Thread model e$B$N3NG’$,$G$-$?J}$,e(B
e$B4r$7$$$N$G$9$,!%!%!%e(B

e$B!!$A$g$C$H9M$($F$_$^$9!%$,!$$$$A$$$A%9%l%C%I%b%G%k$r5$$K$7$J$$$H$$$1$J$$e(B
e$B$N$OBgJQ$=$&$G$9$M!%$J$s$+E}0lE*$J2r7h$,$"$l$P$$$$$s$G$9$,!%e(B

e$B$D$^$j!$e(BTk e$B$Ne(B native thread e$B$Ne(B event loop e$B$NDd;_$O876X$G$9!%e(B

Tk e$B$Ne(B native thread e$B>e$G%3!<%k%P%C%/=hM}$,<B9T$5$l!$e(B
Ruby e$BB&$N=hM}$r4^$a$F0l$D$Ne(B native thread e$B>e$G407k$9$l$P$$$$$N$G$9$,!$e(B
e$B$b$7%3!<%k%P%C%/=hM}$KJLe(B thread e$B$,4X$o$C$F!VBT$A!W$N>uBV$,e(B
e$B@8$8$F$7$^$&$H8G$^$C$F$7$^$$$^$9!%e(B

e$B$3$l$^$G$O%P%C%/%"%C%W$H$J$ke(B event loop e$B$rJLe(B thread e$B$K:n$C$Fe(B
e$BBP=h$7$F$$$?$N$G$9$,!$:#2s$O$3$N<j$,;H$($J$$$N$Ge(B
e$B$I$&$7$h$&$+$J$!$H!%!%!%e(B

e$B!!e(Btcl/tk
e$B$rNI$/CN$i$J$$$G8@$&$s$G$9$,!$40A4$KBP1~$5$;$k$N$O$I$A$i$bIT9,e(B
e$B$J5$$,$7$^$9!%e(B

Tk e$B$Ne(B event loop e$B$+$iB>$Ne(B thread e$B$X$N@Z$jBX$($N$?$a$KI,MW$G$9!%e(B

mode 3 e$B$G$Oe(B OS e$B$Ne(B native thread e$B@Z$jBX$($KG$$;$-$k$N$Ge(B

e$B%3%s%H%m!<%k$NI,MW$O$J$$e(B (e$B$G$-$J$$e(B) e$B$H$$$&G’<1$G$$$$$N$G$9$h$M!)e(B

e$B5-210c$$$G$J$1$l$P!$=>Mh$Ne(B CHECK_INTS() e$B$Oe(B
e$BCY1d=hM}$5$l$F$$$?3d$j9~$=hM}$N<B9T$bF1;~$K9T$&$b$N$@$C$?$H;W$$$^$9$,!$e(B
YARV e$B$G$Oe(B rb_thread_schedule() e$B$N8F$S=P$7$@$1$G==J,$G!$e(B
e$B3d$j9~$
=hM}$NJ}$O5$$K$7$J$/$F$bNI$$$N$G$7$g$&$+!)e(B

e$B!!3d$j9~$_=hM}$r5/$3$9$h$&$K$7$F$"$C$?$h$&$J!%e(B

e$B=>Mh$[$I$K$O5$$K$9$kI,MW$O$J$$$1$l$I$b!$e(BThread model 2 e$B$N>l9g$O!$e(B
e$BG0$N$?$a$KD4@0%Q%i%a!<%?$OMQ0U$7$F$*$$$?J}$,NI$$$H$$$&$3$H$N$h$&$G$9$M!%e(B

e$B!!$J$s$N%Q%i%a!<%?$G$9$+!)e(B

[ruby-dev:30253] Re: YARV e$B$Ne(B thread e$B$K$D$$$Fe(B

e$B!!$"$s$^$jBP:v$O9M$($F$$$J$$$s$G$9$,!"$=$&$$$&e(B API e$B$rMQ0U$9$k$3$H$O2DG=e(B

e$B$G$9!#$=$N:]$O!"$A$g$C$HLLE]$J@)Ls$,F~$k$+$b$7$l$^$;$s!#e(B

e$B5U$Ke(B Ruby e$B$r8F$V$3$H$,e(B e$B$G$-$J$$e(B e$B$h$&$Je(B native thread e$B$G$"$k$+$re(B
e$B%A%’%C%/$9$k$?$a$N8x<0$JJ}K!$O$"$j$^$;$s$+!)e(B
e$BI,MW$b$J$$$N$Ke(B native thread e$B$r$^$?$0$N$OL5BL$G$9$N$G!$e(B
e$BDc%3%9%H$G%A%’%C%/2DG=$J$i!$$=$l$rMxMQ$9$kJ}$,K>$^$7$$$H;W$$$^$7$F!%e(B

e$B!!$&!<$s!%C<E*$K8@$&$HL5M}$8$c$J$$$+$H;W$$$^$9!%e(B

e$B1J0fe(B@e$BCNG=!%6e9)Bg$G$9!%e(B

e$BEY!9$G?=$7Lu$J$$$N$G$9$,!$e(B

From: SASADA Koichi [email protected]
Subject: [ruby-dev:30202] Re: YARV e$B$Ne(B thread e$B$K$D$$$Fe(B
Date: Mon, 29 Jan 2007 10:27:56 +0900
Message-ID: [email protected]

  • e$BAH$_9~$`%i%$%V%i%jB&$G?7$?$Je(B native thread e$B$,:n@.$5$l$?>l9g!$e(B
    e$B$=$Ne(B native thread e$B$+$ie(B Ruby e$B$r8F$V$3$H$O2DG=$G$9$+!)e(B
    e$BIT2DG=$G$O$J$$>l9g!$$I$N$h$&$J=hM}$r@h$K8F$s$G$*$/I,MW$,$"$j$^$9$+!)e(B

e$B!!8=>u$G$OIT2DG=$G$9!#e(B

e$B!!$“$s$^$jBP:v$O9M$($F$$$J$$$s$G$9$,!”$=$&$$$&e(B API e$B$rMQ0U$9$k$3$H$O2DG=e(B
e$B$G$9!#$=$N:]$O!"$A$g$C$HLLE]$J@)Ls$,F~$k$+$b$7$l$^$;$s!#e(B

e$B5U$Ke(B Ruby e$B$r8F$V$3$H$,e(B e$B$G$-$J$$e(B e$B$h$&$Je(B native
thread e$B$G$“$k$+$re(B
e$B%A%'%C%/$9$k$?$a$N8x<0$JJ}K!$O$”$j$^$;$s$+!)e(B
e$BI,MW$b$J$$$N$Ke(B native thread e$B$r$^$?$0$N$OL5BL$G$9$N$G!$e(B
e$BDc%3%9%H$G%A%'%C%/2DG=$J$i!$$=$l$rMxMQ$9$kJ}$,K>$^$7$$$H;W$$$^$7$F!%e(B

[ruby-dev:30205] e$B$N<ALd$H9g$o$;$F!$e(B
e$B<j$N6u$$$?$H$-$K$G$b65$($F$$$?$@$1$k$H=u$+$j$^$9!%e(B

e$B1J0f!wCNG=!%6e9)Bg$G$9!%e(B

e$B2sEz$r$"$j$,$H$&$4$6$$$^$9!%e(B

From: SASADA Koichi [email protected]
Subject: [ruby-dev:30256] Re: YARV e$B$Ne(B thread e$B$K$D$$$Fe(B
Date: Mon, 5 Feb 2007 05:03:36 +0900
Message-ID: [email protected]

e$B%3%s%Q%$%k;~$K!$;XDj$5$l$?e(B Thread model e$B$,$I$l$G$"$k$+$re(B
e$BH=Dj$9$k%^%/%mDj?t$OMQ0U$5$l$^$9$+!)e(B
e$B$G$-$l$P%9%/%j%W%H$+$i$be(B Thread model e$B$N3NG’$,$G$-$?J}$,e(B
e$B4r$7$$$N$G$9$,!%!%!%e(B

e$B!!$A$g$C$H9M$($F$_$^$9!%$,!$$$$A$$$A%9%l%C%I%b%G%k$r5$$K$7$J$$$H$$$1$J$$e(B
e$B$N$OBgJQ$=$&$G$9$M!%$J$s$+E}0lE*$J2r7h$,$"$l$P$$$$$s$G$9$,!%e(B

e$B5$$K$7$F$$$k$N$O%$%Y%s%H%k!<%W$+$i$N@Z$jBX$(%?%$%_%s%0$N@)8f$G$9!%e(B

model 2 e$B$G$OL@<(E*$K@Z$jBX$($F$d$i$J$$$H$$$1$J$$$G$9$,!$e(B
e$B;G$C$?OC$K4p$E$/$H!$$"$^$j$KIQHK$K@Z$jBX$($k$H%l%9%]%s%9$,e(B
e$B0-$/$J$j$=$&$G$9$N$G!$>/$79)IW$,5a$a$i$l$=$&$G$9!%e(B

e$B$=$l$KBP$7$Fe(B model 3 e$B$G$O$=$&$7$?@)8f$OC1$J$kL5BL$G!$e(B
e$B!V$$$D@Z$jBX$o$k$+$o$+$i$J$$!W$H$$$&A0Ds$G$NBP1~$,I,MW$G$9!%e(B

e$B$G!$!V%b%G%k$N3NG’$,$G$-$?J}$,4r$7$$$J!W$H!%e(B

e$B$b$A$m$sEv:B$Oe(B model 2 e$BA0Ds$K$7$F$*$1$P$$$$$s$G$9$,!$e(B
e$B>-Mh$Ne(B model 3 e$B$N<BAu;~$K$O8=:8!F$$7$F$$$k$3$H$re(B
e$B$-$C$HK:$l$F$7$^$C$F$$$k$G$7$g$&$+$ie(B (^
^;e$B!$e(B
e$BBP1~$G$-$=$&$J$i$$$C$=$N$3$H0l5$$K$H$$$&$o$1$G$9!%e(B

e$B!!e(Btcl/tk e$B$rNI$/CN$i$J$$$G8@$&$s$G$9$,!$40A4$KBP1~$5$;$k$N$O$I$A$i$bIT9,e(B
e$B$J5$$,$7$^$9!%e(B

e$B9M$($F$_$F$O$$$k$s$G$9$,$&$^$$<j$,;W$$$D$+$J$/$F!%!%!%e(B
e$B2?$i$+$N@)8B$OIU$1$6$k$r$($J$$$+$b$7$l$^$;$s!%e(B

YARV e$B$G$Oe(B rb_thread_schedule() e$B$N8F$S=P$7$@$1$G==J,$G!$e(B
e$B3d$j9~$_=hM}$NJ}$O5$$K$7$J$/$F$bNI$$$N$G$7$g$&$+!)e(B

e$B!!3d$j9~$_=hM}$r5/$3$9$h$&$K$7$F$"$C$?$h$&$J!%e(B

e$B$3$l$/$i$$$O<+J,$G%A%'%C%/$9$l$PNI$$$3$H$G$9$h$M!%$4$a$s$J$5$$!%e(B

e$B=>Mh$[$I$K$O5$$K$9$kI,MW$O$J$$$1$l$I$b!$e(BThread model 2 e$B$N>l9g$O!$e(B
e$BG0$N$?$a$KD4@0%Q%i%a!<%?$OMQ0U$7$F$*$$$?J}$,NI$$$H$$$&$3$H$N$h$&$G$9$M!%e(B

e$B!!$J$s$N%Q%i%a!<%?$G$9$+!)e(B

e$B@bL@ITB-$G$7$?!%e(B
e$B>e5-$N$h$&$J%$%Y%s%H%k!<%W$+$i$N@Z$jBX$(%?%$%%s%0@)8f$N$?$a$Ne(B
e$BD4@0%Q%i%a!<%?$NOC$G$7$?!%e(B
e$B$G$9$N$G!$e(BYARV e$BB&$G$I$&$N$H$$$&OC$G$O$"$j$^$;$s!%e(B
e$B$^$.$i$o$7$/$F$9$
$^$;$s!%e(B

[ruby-dev:30253] Re: YARV e$B$Ne(B thread e$B$K$D$$$Fe(B

e$B!!$“$s$^$jBP:v$O9M$($F$$$J$$$s$G$9$,!”$=$&$$$&e(B API e$B$rMQ0U$9$k$3$H$O2DG=e(B

e$B$G$9!#$=$N:]$O!"$A$g$C$HLLE]$J@)Ls$,F~$k$+$b$7$l$^$;$s!#e(B

e$B5U$Ke(B Ruby e$B$r8F$V$3$H$,e(B e$B$G$-$J$$e(B e$B$h$&$Je(B native thread e$B$G$“$k$+$re(B
e$B%A%'%C%/$9$k$?$a$N8x<0$JJ}K!$O$”$j$^$;$s$+!)e(B
e$BI,MW$b$J$$$N$Ke(B native thread e$B$r$^$?$0$N$OL5BL$G$9$N$G!$e(B
e$BDc%3%9%H$G%A%'%C%/2DG=$J$i!$$=$l$rMxMQ$9$kJ}$,K>$^$7$$$H;W$$$^$7$F!%e(B

e$B!!$&!<$s!%C<E*$K8@$&$HL5M}$8$c$J$$$+$H;W$$$^$9!%e(B

e$BL5M}$G$9$+!%e(B
native thread ID e$B$He(B Thread e$B%*%V%8%'%/%H$H$N4V$G$Ne(B
e$BBP1~I=$N$h$&$J$b$N$G$b$"$l$P$G$-$k$+$J$H;W$C$?$N$G$9$,!$e(B
e$B;EJ}$J$$$G$9$M!%e(B
e$B$=$NA0Ds$G9M$($k$3$H$K$7$^$9!%e(B

e$B$"$j$,$H$&$4$6$$$^$7$?!%e(B

e$B!!$5$5$@$G$9!#e(B

Hidetoshi NAGAI wrote:

e$B5$$K$7$F$$$k$N$O%$%Y%s%H%k!<%W$+$i$N@Z$jBX$(%?%$%_%s%0$N@)8f$G$9!%e(B

model 2 e$B$G$OL@<(E*$K@Z$jBX$($F$d$i$J$$$H$$$1$J$$$G$9$,!$e(B
e$B;G$C$?OC$K4p$E$/$H!$$"$^$j$KIQHK$K@Z$jBX$($k$H%l%9%]%s%9$,e(B
e$B0-$/$J$j$=$&$G$9$N$G!$>/$79)IW$,5a$a$i$l$=$&$G$9!%e(B

e$B!!$H$j$"$($:!":n$C$F$+$i$I$l$/$i$$BQ$($i$l$J$$%*!<%P%X%C%I$+3NG’$7$F$_e(B
e$B$k!"$H$$$&$N$O$I$&$G$7$g$&$+!#e(B

native thread ID e$B$He(B Thread e$B%*%V%8%’%/%H$H$N4V$G$Ne(B
e$BBP1~I=$N$h$&$J$b$N$G$b$"$l$P$G$-$k$+$J$H;W$C$?$N$G$9$,!$e(B
e$B;EJ}$J$$$G$9$M!%e(B
e$B$=$NA0Ds$G9M$($k$3$H$K$7$^$9!%e(B

e$B!!BP1~I=$Oe(B YARV e$B$O:n$k$s$G$9$,!“e(BYARV
e$B30$N%M%$%F%#%V%9%l%C%I$+$i$=$$$D$Ke(B
e$B0BA4$K%”%/%;%9$G$-$k$H$$$&J]>Z$,$J$$$s$G$9$M!#$&!<$s!"$=$3$r%"%/%;%9$G$-e(B
e$B$k$h$&$K$9$l$P$$$$$N$+!#$&!<$s!"%b%G%k#2$G$b!"$=$N$?$a$K$$$A$$$A%m%C%/$+e(B
e$B$1$J$$$H$$$1$J$/$J$C$F$7$^$&$J$!!#e(B