Google

Thread$B%i%$%V%i%j(B

Thread$B%i%$%V%i%j$K$h$C$F(BRuby$B$K$h$kJB9T%W%m%0%i%_%s%0$,2DG=$K(B $B$J$j$^$9!%%9%l%C%I$O%a%b%j6u4V$r6&M-$7$FF1;~$K

$B%W%m%0%i%`$N3+;O$HF1;~$K@8@.$5$l$k%9%l%C%I$r(Bmain thread$B$H8F$S(B $B$^$9!%$J$s$i$+$NM}M3$G(Bmain thread$B$,=*N;$9$k;~$K$O!$B>$NA4$F(B $B$N%9%l%C%I$b%W%m%0%i%`A4BN$b=*N;$7$^$9!%%f!<%6$+$i$N3d9~$_$K$h$C(B $B$FH/@8$7$?Nc30$O(Bmain thread$B$KAw$i$l$^$9!%(B

Thread$B%i%$%V%i%j$O%3%s%Q%$%k;~$N@_Dj$G30$9$3$H$N(B $B$G$-$k%*%W%7%g%s$G$9!%%$%s%?%W%j%?$K$h$C$F$O%9%l%C%I$N;H$($J$$(B $B>l9g$,$"$j$^$9!%(B


Thread

Thread$B$O%f!<%6%l%Y%k$G$N%9%l%C%I$rI=8=$9$k%/%i%9(B $B$G$9!%(B

$B%9%l%C%I$N5/F0;~$K;XDj$7$?%V%m%C%/$No$J=*N;$bNc30$J$I$K$h(B $B$k0[>o=*N;$b4^$_$^$9!%(B

$B%9!<%Q!<%/%i%9(B:

Object

$B%/%i%9%a%=%C%I(B:

abort_on_exception

$B$$$:$l$+$N%9%l%C%I$,Nc30$K$h$C$F=*N;$7$?;~$K!$%$%s%?%W%j%?A4(B $BBN$rCfCG$5$;$k$+$I$&$+$N%U%i%0$NCM$rJV$7$^$9!%(B

abort_on_exception=(yes_no)

$B$$$:$l$+$N%9%l%C%I$,Nc30$K$h$C$F=*N;$7$?;~$K!$%$%s%?%W%j%?A4(B $BBN$rCfCG$5$;$k$+$I$&$+$N%U%i%0$r@_Dj$7$^$9!%DL>o$"$k%9%l%C%I$G5/$3$C$?Nc30$O!$(B Thread#join$B$J$I$G8!=P$5$l$J$$8B$j(B $B$=$N%9%l%C%I$@$1$r$J$K$b7Y9p$r=P$5$:$K=*N;$5$^$9!%(B

current

$B8=:_

exit

$B%+%l%s%H%9%l%C%I$N

join thread

thread$B$G;XDj$7$?%9%l%C%I$N

kill thread

$B;XDj$7$?%9%l%C%I$N

new {...}
start {...}
fork {...}

$B%9%l%C%I$r@8@.$7$F!$%V%m%C%/$NI>2A$r3+;O$7$^$9!%@8@.$5$l$?%9(B $B%l%C%I$rJV$7$^$9!%(B

pass

$BB>$N%9%l%C%I$Ky$j$^$9!%(B

stop

$BB>$N%9%l%C%I$+$i(Brun$B%a%=%C%I$G:F5/F0$5$l$k$^$G!$(B $B%+%l%s%H%9%l%C%I$N

$B%a%=%C%I(B:

self[name]

name$B$KBP1~$7$?%9%l%C%I$K8GM-$N%G!<%?$rname$B$OJ8;zNs$+%7%s%\%k$G;XDj$7$^$9!%(B

self[name]=val

val$B$r(Bname$B$KBP1~$9$k%9%l%C%I8GM-$N%G!<(B $B%?$H$7$F3JG<$7$^$9!%(Bname$B$OJ8;zNs$+%7%s%\%k$G;XDj(B $B$7$^$9!%(B

abort_on_exception

$B$=$N%9%l%C%I$,Nc30$K$h$C$F=*N;$7$?;~$K!$%$%s%?%W%j%?A4(B $BBN$rCfCG$9$k$+$I$&$+$N%U%i%0$NCM$rJV$7$^$9!%(B

abort_on_exception=(yes_no)

$B$=$N%9%l%C%I$,Nc30$K$h$C$F=*N;$7$?;~$K!$%$%s%?%W%j%?A4(B $BBN$rCfCG$5$;$k$+$I$&$+$N%U%i%0$r@_Dj$7$^$9!%(B

alive?
status

$B%9%l%C%I$,!V@8$-$F$$$k!W;~!$??$rJV$7$^$9!%@5>o=*N;$7$?;~$K$O(Bfalse$B!$(B $BNc30=*N;$7$?;~$K$O(Bnil$B$rJV$7$^$9!%(B

exit

$B%9%l%C%I$N

join

$B%9%l%C%I$N

raise([error_type,][message][,traceback])

$B$=$N%9%l%C%I$G6/@)E*$KNc30$rH/@8$5$;$^$9!%(B

run

$B%9%l%C%I$Nl(B $B9g$K$O$J$K$b$7$^$;$s!%(B

stop?

$B%9%l%C%I$,Dd;_$7$F$$$k;~!$??$rJV$7$^$9!%(B

value

$B%9%l%C%I$,Dd;_$9$k$^$GBT$A!$%V%m%C%/$,JV$7$?CM$rJV$7$^$9!%%9(B $B%l%C%Il9g$K$O!$$=$NNc30$r:FH/@8$5$;$^(B $B$9!%(B

wakeup

$BDd;_Cf$N%9%l%C%I$,:F5/F0$G$-$k$h$&$K$7$^$9!%(B

Mutex

Mutex($BAj8_GSB>%m%C%/(B)$B$O6&M-%G!<%?$rJB9T%"%/%;%9$+$iJ]8n$9$k(B $B$?$a$K$"$j$^$9!%(BMutex$B$NE57?E*$J;H$$J}$O(B(m$B$r(B Mutex$B%*%V%8%'%/%H$H$7$^$9(B):

begin
  m.lock
  # m$B$K$h$C$FJ]8n$5$l$?%/%j%F%#%+%k%;%/%7%g%s(B
ensure
  m.unlock
end
$B$^$?$O!$$h$j4JC1$K(B
m.synchronize {
  # m$B$K$h$C$FJ]8n$5$l$?%/%j%F%#%+%k%;%/%7%g%s(B
}

$B%9!<%Q!<%/%i%9(B:

Object

$B%/%i%9%a%=%C%I(B:

new

$B?7$7$$(Bmutex$B$r@8@.$7$^$9!%(B

$B%a%=%C%I(B:

lock

mutex$B%*%V%8%'%/%H$r%m%C%/$7$^$9!%0lEY$K0l$D$N%9(B $B%l%C%I$@$1$,(Bmutex$B$r%m%C%/$G$-$^$9!%4{$K%m%C%/$5$l$F$$$k(Bmutex $B$KBP$7$F%m%C%/$r9T$*$&$H$7$?%9%l%C%I$O(Bmutex$B$N%m%C%/$,3+J|$5(B $B$l$k$^$G!$

locked?

mutex$B$,%m%C%/$5$l$F$$$k;~!$??$rJV$7$^$9!%(B

synchronize

mutex$B$r%m%C%/$7!$%V%m%C%/$r

try_lock

mutex$B$r%m%C%/$7$h$&$H$7$F!$%m%C%/$,@.8y$7$?>l9g!$??$rJV$7$^(B $B$9!%%m%C%/$G$-$J$+$C$?>l9g$K$O%V%m%C%/$;$:56$rJV$7$^$9!%(B

unlock

mutex$B$N%m%C%/$r3+J|$7$^$9!%(Bmutex$B$N%m%C%/BT$A$K$J$C$F$$$?%9%l%C(B $B%I$N

Queue

Queue$B$O%9%l%C%I4V$N(BFIFO(first in first out)$B$NDL?.O)$G$9!%%9(B $B%l%C%I$,6u$N(Bqueue$B$rFI$_=P$=$&$H$9$k$HDd;_$7$^$9!%(Bqueue$B$K$J$s$i(B $B$+$N>pJs$,=q$-9~$^$l$k$H

$B%9!<%Q!<%/%i%9(B:

Object

$B%/%i%9%a%=%C%I(B:

new

$B?7$7$$(Bqueue$B%*%V%8%'%/%H$r@8@.$7$^$9!%(B

$B%a%=%C%I(B:

empty?

queue$B$,6u$N;~!$??$rJV$7$^$9!%(B

length

queue$B$ND9$5$rJV$7$^$9!%(B

pop [non_block]

queue$B$+$i$R$H$DCM$rJN,2DG=$J0z?t(Bnon_block$B$,(Bnil$B$G$J(B $B$$;~!$(Bpop$B$O(Bqueue$B$,6u$N;~$KNc30$rH/@8$7$^$9!%(B

push value

queue$B$NCM$rDI2C$7$^$9!%BT$C$F$$$k%9%l%C%I$,$$$l$P


$B>e(B - $B - $BL\

matz@netlab.co.jp