Supporting Fiber

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

Yusuke ENDOH e$B$5$s$O=q$-$^$7$?e(B:

e$B?F;R4X78$rMxMQ$7$?%W%m%0%i%_%s%0$r$7$F$$$k>l9g!"!V?F;R4X78$Ne(B
e$BGK2u$r5/$3$5$J$1$l$P!W!"e(BFiber#prev e$B$,@5$7$/!V8F$S=P$785!W$r;Xe(B
e$B$7<($9$?$a!"e(BSemiCoroutine e$B$N$h$&$J;H$$J}$,2DG=$G$9!#e(B

e$B:#$Ne(B Fiber e$B$G!V?F;R4X78$r2u$5$J$$HO0O!W$H$$$&$N$O$b$N$9$4$/e(B
e$B69$$$H;W$$$^$9!#e(Bcoroutine e$B$NCf$Ge(B coroutine e$B$r8F$S=P$7$Fe(B
suspend e$B$r<u$1$k$@$1$G0cH?$7$F$7$^$$$^$9!#e(B

e$B!!%,!<%s!#$=$NDL$j$G$7$?!#$4$a$s$J$5$$e(B orze$B!!$3$l$O4VH4$1$@e(B
e$B$J$!!#$3$s$J!VCfESH>C<!W$J$b$N$O!"L5$$$[$&$,$$$$$G$9$M!#;W$$0ce(B
e$B$$$r$7$F$$$^$7$?!#$,$,$C$HE12s$7$^$9!#e(B

e$B!Je(Be$B?F;R4X78$,GK2u$5$l$k$^$Ge(Be$B%9%?%C%/$G?F;R4X78$rJ];}$9$k$H$$$&e(B
e$BA*Br;h$b$"$k$,!"%3%9%H$K$"$o$J$$$+$J$!!Ke(B

e$B!!$J$s$H$J$/!“e(Bresume, yield e$B$N$”$k!"e(BSemiCoroutine
e$B%/%i%9$r!"e(B
Rubye$B%l%Y%k$G:n$k$N$,$$$$$h$&$J5$$,$7$F$-$^$7$?!#e(B

e$B$,2?$b=PNO$5$l$J$$$H$$$&$h$/$o$+$i$J$$5sF0$r$7$^$9$,!"e(B
e$B$3$l$be(B Fiber e$B$r$h$/$o$+$C$F$J$$$3$H$,860x$N!VIT;W5D$J$3$H!W$G$7$g$&$+!#e(B

e$B!!$&!<$s!“e(Bprev
e$B$,JQ$J$H$3$m;X$7$F$k$N$+$7$i$s!J$”$s$^$j9M$($Fe(B
e$B$^$;$s!Ke(B

e$B$A$J$_$Ke(B Lua e$B$N3+H/?X!)$NNc$NO@J8$K$h$k$H!"e(Bsemi-coroutine e$B$Ge(B
coroutine e$B$r%(%s%3!<%I$G$-$k$H<gD%$5$l$F$^$7$?!#e(B

e$BJd=ue(B coroutine e$B$rN)$A>e$2$F!"e(BTRANSFER e$B$9$k$H$-$OA4$F$=$Ne(B

e$BJd=ue(B coroutine e$B$r2p$7$F8F$V46$8$G$9!#%H%i%s%]%j%s!)e(B

e$B!!$&$&$s!"$J$k$[$I!#e(B

dynamic-wind e$B$K$D$$$F$O$*;!$7$NDL$j$h$/$o$+$C$F$^$;$s$,!“Nc$($Pe(B
e$B!V%V%m%C%/$r<h$k%a%=%C%I$r=q$/$H$-!”$=$N%a%=%C%I$r;H$&?M$,e(B
callcc e$B$G%V%m%C%/$NCf$KHt$S9~$`$h$&$J$3$H$r$7$?$H$-$NBP:v$,e(B
e$B$H$l$J$$!W$C$F$3$H$G$7$g$&$+!#e(B

e$B!!e(Bensure e$B$He(B ensure
e$B$N5U$,$&$^$$$3$H=PMh$J$$$C$F$3$H$G$9!#e(B

e$B$4$b$C$H$b$G$9$,!“2<<j$KB>$N8@8l$G==J,N}$i$l$?@_7W$,$”$k$J$ie(B
e$B$=$l$rEp$`$N$b<j$+$H;W$o$J$/$b$J$$$G$9!#e(B

e$B!!$=$l$K$b$$$/$D$+A*Br;h$O$"$k$s$G$9$h$M!#e(B

e$B1sF#$G$9!#e(B

e$B@bL@2<<j$G$9$_$^$;$s!#$o$+$C$F$b$i$($?$h$&$G$h$+$C$?$G$9!#e(B

e$B!Je(Be$B?F;R4X78$,GK2u$5$l$k$^$Ge(Be$B%9%?%C%/$G?F;R4X78$rJ];}$9$k$H$$$&e(B
e$BA*Br;h$b$"$k$,!"%3%9%H$K$"$o$J$$$+$J$!!Ke(B

e$B;29M$^$G$K!":G=i$K;d$,e(B Fiber e$B$N=*N;;~$N5sF0$r$_$?$H$-$O!“e(B
e$B0J2<$N$h$&$J0UL#O@$+$J!”$H;W$$$^$7$?!#e(B

  • e$B=[4D$7$F$b$$$$$+$i?F;R4X78$rJ]B8$7$F$*$/e(B
  • Fiber e$B$N=*N;;~$K$O?F;R4X78$r?F$N$[$&$KC)$C$F!"e(B
    e$B:G=i$K8+$D$+$C$?@8$-$F$$$ke(B Fiber e$B$re(B yield e$B$9$ke(B

e$B$3$N0UL#$,JXMx$+$I$&$+$O9M$($F$$$^$;$s!#e(B

dynamic-wind e$B$K$D$$$F$O$*;!$7$NDL$j$h$/$o$+$C$F$^$;$s$,!“Nc$($Pe(B
e$B!V%V%m%C%/$r<h$k%a%=%C%I$r=q$/$H$-!”$=$N%a%=%C%I$r;H$&?M$,e(B
callcc e$B$G%V%m%C%/$NCf$KHt$S9~$`$h$&$J$3$H$r$7$?$H$-$NBP:v$,e(B
e$B$H$l$J$$!W$C$F$3$H$G$7$g$&$+!#e(B

e$B!!e(Bensure e$B$He(B ensure e$B$N5U$,$&$^$$$3$H=PMh$J$$$C$F$3$H$G$9!#e(B

e$B$=$l$r<B:]$K;H$$$?$$$H$-$H$O!">e5-$N$h$&$JBP:v$r$H$k$H$-$+$H;W$$$^$7$?!#e(B

e$B$4$b$C$H$b$G$9$,!“2<<j$KB>$N8@8l$G==J,N}$i$l$?@_7W$,$”$k$J$ie(B
e$B$=$l$rEp$`$N$b<j$+$H;W$o$J$/$b$J$$$G$9!#e(B

e$B$=$l$K$b$$$/$D$+A*Br;h$O$"$k$s$G$9$h$M!#e(B

(e$B!V2<<j$KN}$i$l$?@_7W!W$C$F$J$s$@$he(B orz)
e$B$O$$!#e(BLua
e$B$K=,$&$K$;$h=,$o$J$$$K$;$h!“Nc$NO@J8$KA*Br;h$,$^$H$^$C$F$$$k$N$Ge(B
e$B0lFI$N2ACM$,$”$k$H;W$$$^$9!#e(B