# fastthread$B$K$D$$$F(B

**URL:** <https://www.ruby-forum.com/t/fastthread-b-k-d-f-b/86750>\
**Category:** Development\
**Created:** [February 25, 2007, 9:04am UTC](https://www.ruby-forum.com/t/fastthread-b-k-d-f-b/86750 "2007-02-25T09:04:16Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![Shugo\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7ea924/32.png) [@Shugo\_M](https://www.ruby-forum.com/u/Shugo_M)\
**Post date:** [February 25, 2007, 9:04am UTC](https://www.ruby-forum.com/t/fastthread-b-k-d-f-b/86750/1 "2007-02-25T09:04:16Z")

</div>

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

e$B$A$g$C$HCY$-$K\<:$7$?46$b$"$j$^$9$,!“e(Bfastthreade$B$N%3!\<%I%l%S%e!\<$re(B  
e$B$7$^$7$?$N$G!”$$$/$D$+5$IU$$$?E@$r!#e(B

(1) rb\_thread\_wakeup()e$B$Ne(Brb\_rescue2()

rb\_thread\_wakeup()e$B$re(Brb\_rescue2()e$B$G\<B9T$7$Fe(BThreadErrore$B$rL5;k$9$ke(B  
e$B$h$&$K$7$F$$$^$9$,!“e(BTHREAD\_KILLEDe$B$J%9%l%C%I$O%9%-%C%W$7$F\<!$Ne(B  
e$B%9%l%C%I$re(Bwakeupe$B$7$J$$$H!”$@$l$be(BMutexe$B$r3MF@$G$-$J$/$J$C$F$^$:$$e(B  
e$B$h$&$J5$$,$7$^$9!#e(B

(2) Marshale$B$NBP1~e(B

Marshale$B$Ge(Blocke$B$G%V%m%C%/$7$F$$$k;~$K$be(Bdump/loade$B$G$-$k$h$&$K$J$C$Fe(B  
e$B$$$^$9$,!":#$Ne(BMutexe$B$G$Oe(Blocke$BCf$Oe(Bdump/loade$B$G$-$J$$$N$GHs8\_49$G$9$M!#e(B  
Javae$B$Ne(BObjecte$B$be(Bdump/loade$B$G$-$ke(B(Javae$B$@$H%b%K%?5!9=$Oe(BObjecte$B$KHw$o$C$Fe(B  
e$B$$$^$9e(B)e$B$N$GLdBj$J$$$H$O;W$&$N$G$9$,!"$3$NE@$K$D$$$F$O==J,8!F$$5$l$Fe(B  
e$B$$$^$9$G$7$g$&$+!#e(B

(3) malloc/free

malloc/freee$B$r;H$C$F$^$9$,!"e(Bxmalloc/xfreee$B$K$7$?J}$,$h$$$N$G$Oe(B  
e$B$J$$$G$7$g$&$+!#e(B

(4) rb\_thread\_critical

e$B$$$/$D$+e(Brb\_thread\_criticale$B$NA`:n$r$7$F$$$^$9$,!“e(BCe$B%l%Y%k$G$Oe(B  
e$B$”$k\<o$Ne(BRuby APIe$B$r8F$P$J$$$+$.$j$O%9%1%8%e!\<%j%s%0%$%Y%s%H$Oe(B  
e$BH/@8$7$J$$$N$GITMW$G$O$J$$$G$7$g$&$+!#e(B

(5) Queue

Queuee$B$Oe(BRubye$B%l%Y%k$Ge(BMutex/ConditionVariablee$B$r;H$C$F\<BAu$7$?J}$,e(B  
e$B$$$$$h$&$K;W$$$^$9!#e(B

# 

e$B$H$$$&$+!“e(BQueuee$B$H$$$&L\>A0$b$A$g$C$H$”$l$J$N$G!"e(B1.9e$B$G$Oe(B

# Thread::Queuee$B$H$+$K$7$?J}$,$$$$5$$b!#e(B

e$B$=$&$9$k$H!"e(BListe$B$Ne(Bsizee$B$J$I$Oe(BMutex/ConditionVariablee$B$N\<B8=$K$Oe(B  
e$BITMW$J$N$G:o$k$3$H$b$G$-$^$9$M!#e(B

(6) e$B\<B@Se(B

Mongrele$B$G;H$C$F$$$k$N$G\<B@S$,$"$k$H$$$&$3$H$G$9$,!“e(BConditionVariable  
e$B$O;H$o$l$F$$$J$$$h$&$K;W$$$^$9!#e(B  
e$B$I$A$i$+$H$$$&$He(BConditionVariablee$B$NJ}$,LdBj$,5/$-$d$9$$$+$b$7$l$^$;$s!#e(B  
e$B$”$H!"%9%l%C%I$,$i$\_$@$H$"$k%"%W%j%1!\<%7%g%s$GLdBj$J$$$+$i$H$$$C$F!“e(B  
e$BB\>$N%”%W%j%1!\<%7%g%s$GLdBj$J$$$H$O$$$($J$$$N$G!“J#?t$N%”%W%j%1!\<%7%g%se(B  
e$B$G8!\>Z$7$?J}$,K\>$^$7$$$G$9$M!#e(B

(7) e$B%a%s%F%Je(B

fastthreade$B$N%a%s%F%J$OC/$K$J$k$N$G$7$g$&$+e(B?

e$B:G8e$NJ}$O%3!\<%I$H4X78$J$/$J$C$F$^$9$Me(B;p  
e$BB\>$K$b2?$+$"$C$?$h$&$J5$$,$7$^$9$,!“K:$l$^$7$?!#e(B  
e$BA4BNE\*$KCWL?E\*$JLdBj$,$”$k$o$1$G$O$J$$e(B(lib/thread.rbe$B$HF1$8DxEYe(B  
e$B$K$O\>e\<j$/F0$-$=$&e(B)e$B$H;W$&$N$G$9$,!"$A$g$C$HIT0B$G$9!#e(B

e$B$H$$$C$F:#$N%?%$%\_%s%0$G%3!\<%I$r$$$8$k$N$b62$$$N$G$9$,!"$I$&$9$ke(B  
e$B$Y$-$G$7$g$&$+!#e(B  
1.8.5e$B$b%a%s%F%J%s%9$5$l$k$3$H$G$9$7!"$3$N$^$^$($$$d$C$HF~$l$Fe(B  
e$B$7$^$C$F$b$$$$$G$9$+$M!#e(B

# 

e$B$=$&$$$($P!"e(Bruby\_1\_8\_5e$B$Ne(Bsignal.ce$B$NOC$Oe(Bmpute$B$5$s$KEA$o$C$F$k$se(B

# e$B$G$7$?$C$1!#e(B

---

<div class="post-metadata">

**Author:** ![Shugo\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7ea924/32.png) [@Shugo\_M](https://www.ruby-forum.com/u/Shugo_M)\
**Post date:** [February 25, 2007, 9:47am UTC](https://www.ruby-forum.com/t/fastthread-b-k-d-f-b/86750/2 "2007-02-25T09:47:18Z")

</div>

Shugo M. wrote:

> # e$B$=$&$$$($P!"e(Bruby\_1\_8\_5e$B$Ne(Bsignal.ce$B$NOC$Oe(Bmpute$B$5$s$KEA$o$C$F$k$se(B
> 
> # e$B$G$7$?$C$1!#e(B

e$BEA$o$C$F$J$$$C$9!#\>:Y4uK\>!#e(B

---

<div class="post-metadata">

**Author:** ![Shugo\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7ea924/32.png) [@Shugo\_M](https://www.ruby-forum.com/u/Shugo_M)\
**Post date:** [February 25, 2007, 3:19pm UTC](https://www.ruby-forum.com/t/fastthread-b-k-d-f-b/86750/3 "2007-02-25T15:19:57Z")

</div>

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

Urabe S. wrote:

> Shugo M. wrote:
> 
> > # e$B$=$&$$$($P!"e(Bruby\_1\_8\_5e$B$Ne(Bsignal.ce$B$NOC$Oe(Bmpute$B$5$s$KEA$o$C$F$k$se(B
> > 
> > # e$B$G$7$?$C$1!#e(B
> 
> e$BEA$o$C$F$J$$$C$9!#\>:Y4uK\>!#e(B

ruby\_1\_8e$B$G$OD\>$C$F$$$k$s$G$9$,!“e(B1.8.5e$B$G$OFCDj$N%W%i%C%H%U%)!\<%`e(B (e$B<+J,$,3NG'$7$?$N$Oe(BLinxu)e$B$G!"e(Bflocke$B$J$I$N%7%9%F%`%3!\<%k$G%V%m%C%/e(B  
e$B$7$F$$$k;~$K3d$j9~$\_$,8z$+$J$$LdBj$,$”$k$h$&$G$9!#e(B

trap(:INT) do  
p :INT  
exit!  
end  
f = open("/tmp/lock", “w”)  
f.flock(File::LOCK\_EX)  
p :locked  
sleep

e$B$3$s$J%9%/%j%W%H$rFs$DF0$+$7$F!"8e$GF0$+$7$?J}$Ge(BCtrl-Ce$B$r2!$9$H:F8=e(B  
e$B$7$^$9!#e(B  
ruby\_1\_8e$B$@$He(B:INTe$B$H=PNO$7$F=\*N;$7$^$9$,!"e(Bruby\_1\_8\_5e$B$G$Oe(Bflocke$B$G%m%C%/e(B  
e$B$r3MF@$7$FLa$C$FMh$k$^$G2?$b5/$3$j$^$;$s!#e(B

ruby\_1\_8e$B$G=$@5$5$l$?%j%S%8%g%s$Oe(B11203e$B$G$9$,!“Fs$D$”$k=$@5$N$&$A!"e(B

```
    * signal.c (ruby_signal): don't set SA_RESTART. a backport from
      the HEAD. [ruby-talk:220937] [ruby-talk:147220]

```

e$B$NJ}$,\>e5-$NLdBj$N=$@5$G$9!#e(B

---

<div class="post-metadata">

**Author:** ![Shugo\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7ea924/32.png) [@Shugo\_M](https://www.ruby-forum.com/u/Shugo_M)\
**Post date:** [February 25, 2007, 3:38pm UTC](https://www.ruby-forum.com/t/fastthread-b-k-d-f-b/86750/4 "2007-02-25T15:38:58Z")

</div>

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

Shugo M. wrote:

> (1) rb\_thread\_wakeup()e$B$Ne(Brb\_rescue2()
> 
> rb\_thread\_wakeup()e$B$re(Brb\_rescue2()e$B$G\<B9T$7$Fe(BThreadErrore$B$rL5;k$9$ke(B  
> e$B$h$&$K$7$F$$$^$9$,!“e(BTHREAD\_KILLEDe$B$J%9%l%C%I$O%9%-%C%W$7$F\<!$Ne(B  
> e$B%9%l%C%I$re(Bwakeupe$B$7$J$$$H!”$@$l$be(BMutexe$B$r3MF@$G$-$J$/$J$C$F$^$:$$e(B  
> e$B$h$&$J5$$,$7$^$9!#e(B

e$B$3$l$O4\*0c$$$G$7$?!#e(B  
rescue2()e$B$NLa$jCM$r8+$Fe(Bwhilee$B%k!\<%W$r2s$7$F$$$k$N$G\>e5-$N$h$&$Je(B  
e$B=hM}$K$J$C$F$$$=$&$G$9$M!#e(B

---

<div class="post-metadata">

**Author:** ![Shugo\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7ea924/32.png) [@Shugo\_M](https://www.ruby-forum.com/u/Shugo_M)\
**Post date:** [February 26, 2007, 1:30am UTC](https://www.ruby-forum.com/t/fastthread-b-k-d-f-b/86750/5 "2007-02-26T01:30:29Z")

</div>

e$BKNIt$G$9e(B

Shugo M. wrote:

> ruby\_1\_8e$B$G$OD\>$C$F$$$k$s$G$9$,!“e(B1.8.5e$B$G$OFCDj$N%W%i%C%H%U%)!\<%`e(B (e$B<+J,$,3NG'$7$?$N$Oe(BLinxu)e$B$G!"e(Bflocke$B$J$I$N%7%9%F%`%3!\<%k$G%V%m%C%/e(B  
> e$B$7$F$$$k;~$K3d$j9~$\_$,8z$+$J$$LdBj$,$”$k$h$&$G$9!#e(B

e$B$U$`!#$5$9$,$K$3$N5sF0$K0MB8$7$F$k%W%m%0%i%`$O$J$$$H?.$8$?$$$N$G!“e(B185e$B$Ke(B  
e$B$b$”$F$^$9!#;XE&$5$l$J$-$c5$$E$$$F$^$;$s$G$7$?!#$"$j$,$H$&$4$6$$$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![Shugo\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7ea924/32.png) [@Shugo\_M](https://www.ruby-forum.com/u/Shugo_M)\
**Post date:** [February 26, 2007, 1:35am UTC](https://www.ruby-forum.com/t/fastthread-b-k-d-f-b/86750/6 "2007-02-26T01:35:29Z")

</div>

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

Urabe S. wrote:

> > ruby\_1\_8e$B$G$OD\>$C$F$$$k$s$G$9$,!“e(B1.8.5e$B$G$OFCDj$N%W%i%C%H%U%)!\<%`e(B (e$B<+J,$,3NG'$7$?$N$Oe(BLinxu)e$B$G!"e(Bflocke$B$J$I$N%7%9%F%`%3!\<%k$G%V%m%C%/e(B  
> > e$B$7$F$$$k;~$K3d$j9~$\_$,8z$+$J$$LdBj$,$”$k$h$&$G$9!#e(B
> 
> e$B$U$`!#$5$9$,$K$3$N5sF0$K0MB8$7$F$k%W%m%0%i%`$O$J$$$H?.$8$?$$$N$G!“e(B185e$B$Ke(B  
> e$B$b$”$F$^$9!#;XE&$5$l$J$-$c5$$E$$$F$^$;$s$G$7$?!#$"$j$,$H$&$4$6$$$^$9!#e(B

e$B$A$J$\_$Ke(B1.8.4e$B$G$OLdBj$J$+$C$?$j$7$^$9!#e(B  
e$B\>$7$/$OGD0.$7$F$$$J$$$N$G$9$,!“e(B1.8.5e$B$Ke(Btrunke$B$N=$@5$,%^!\<%8$5$l$?;~$Ke(B  
SA\_RESTARTe$B$NJQ99$,\<h$j$3$$5$l$FCfESH\>C\<$J\>uBV$K$J$C$?$?$a$K!”\>e5-$Ne(B  
e$B$h$&$J\>uBV$K$J$C$F$7$^$C$?$h$&$G$9!#e(B

---

<div class="post-metadata">

**Author:** ![Shugo\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7ea924/32.png) [@Shugo\_M](https://www.ruby-forum.com/u/Shugo_M)\
**Post date:** [February 26, 2007, 7:13am UTC](https://www.ruby-forum.com/t/fastthread-b-k-d-f-b/86750/7 "2007-02-26T07:13:52Z")

</div>

At Sun, 25 Feb 2007 17:03:17 +0900,  
Shugo M. wrote:

> e$B$A$g$C$HCY$-$K\<:$7$?46$b$"$j$^$9$,!“e(Bfastthreade$B$N%3!\<%I%l%S%e!\<$re(B  
> e$B$7$^$7$?$N$G!”$$$/$D$+5$IU$$$?E@$r!#e(B

e$B!!$"$j$,$H$&$4$6$$$^$9!\*e(B

e$B!!$3$N$h$&$J$b$N$OK\Mhe(B trunk  
e$B$G\<B83$9$Y$-$G$9$,!"%?%$%\_%s%0E\*$Ke(B  
e$B:#$Ne(B trunk e$B$OMn$ACe$$$F$$$J$$$N$G!"e(B ruby\_1\_8  
e$B$G8x3+%F%9%H$7$Fe(B  
e$B$$$k$H$$$&\>u67$G$9!#e(B(e$B2\<$NJ}$KB3$/e(B)

> (1) rb\_thread\_wakeup()e$B$Ne(Brb\_rescue2()
> 
> rb\_thread\_wakeup()e$B$re(Brb\_rescue2()e$B$G\<B9T$7$Fe(BThreadErrore$B$rL5;k$9$ke(B  
> e$B$h$&$K$7$F$$$^$9$,!“e(BTHREAD\_KILLEDe$B$J%9%l%C%I$O%9%-%C%W$7$F\<!$Ne(B  
> e$B%9%l%C%I$re(Bwakeupe$B$7$J$$$H!”$@$l$be(BMutexe$B$r3MF@$G$-$J$/$J$C$F$^$:$$e(B  
> e$B$h$&$J5$$,$7$^$9!#e(B

e$B!!JL%a!\<%k$NDL$j!"JV$jCM$r8+$F%k!\<%W$r7QB3$7$F$$$k$N$GBg\>fIW$=$&e(B  
e$B$G$9$M!#e(B

> (2) Marshale$B$NBP1~e(B
> 
> Marshale$B$Ge(Blocke$B$G%V%m%C%/$7$F$$$k;~$K$be(Bdump/loade$B$G$-$k$h$&$K$J$C$Fe(B  
> e$B$$$^$9$,!“:#$Ne(BMutexe$B$G$Oe(Blocke$BCf$Oe(Bdump/loade$B$G$-$J$$$N$GHs8\_49$G$9$M!#e(B  
> Javae$B$Ne(BObjecte$B$be(Bdump/loade$B$G$-$ke(B(Javae$B$@$H%b%K%?5!9=$Oe(BObjecte$B$KHw$o$C$Fe(B  
> e$B$$$^$9e(B)e$B$N$GLdBj$J$$$H$O;W$&$N$G$9$,!”$3$NE@$K$D$$$F$O==J,8!F$$5$l$Fe(B  
> e$B$$$^$9$G$7$g$&$+!#e(B

e$B!!5$$E$-$^$;$s$G$7$?!#8!F$$7$^$9!#e(B

> (3) malloc/free
> 
> malloc/freee$B$r;H$C$F$^$9$,!"e(Bxmalloc/xfreee$B$K$7$?J}$,$h$$$N$G$Oe(B  
> e$B$J$$$G$7$g$&$+!#e(B

e$B!!=$@5$7$^$9!#e(B

> (4) rb\_thread\_critical
> 
> e$B$$$/$D$+e(Brb\_thread\_criticale$B$NA`:n$r$7$F$$$^$9$,!“e(BCe$B%l%Y%k$G$Oe(B  
> e$B$”$k\<o$Ne(BRuby APIe$B$r8F$P$J$$$+$.$j$O%9%1%8%e!\<%j%s%0%$%Y%s%H$Oe(B  
> e$BH/@8$7$J$$$N$GITMW$G$O$J$$$G$7$g$&$+!#e(B

e$B!!3N$+$K!#@_Dj$7$F$$$kCM$bE}0l46$,$J$$$N$G8+D\>$7$F$_$^$9!#e(B

> (5) Queue
> 
> Queuee$B$Oe(BRubye$B%l%Y%k$Ge(BMutex/ConditionVariablee$B$r;H$C$F\<BAu$7$?J}$,e(B  
> e$B$$$$$h$&$K;W$$$^$9!#e(B
> 
> # e$B$H$$$&$+!“e(BQueuee$B$H$$$&L\>A0$b$A$g$C$H$”$l$J$N$G!"e(B1.9e$B$G$Oe(B
> 
> # Thread::Queuee$B$H$+$K$7$?J}$,$$$$5$$b!#e(B
> 
> e$B$=$&$9$k$H!"e(BListe$B$Ne(Bsizee$B$J$I$Oe(BMutex/ConditionVariablee$B$N\<B8=$K$Oe(B  
> e$BITMW$J$N$G:o$k$3$H$b$G$-$^$9$M!#e(B

e$B!!:n\<T$H$bAjCL$7$F$\_$^$9!#e(B

> (6) e$B\<B@Se(B
> 
> Mongrele$B$G;H$C$F$$$k$N$G\<B@S$,$“$k$H$$$&$3$H$G$9$,!“e(BConditionVariable  
> e$B$O;H$o$l$F$$$J$$$h$&$K;W$$$^$9!#e(B  
> e$B$I$A$i$+$H$$$&$He(BConditionVariablee$B$NJ}$,LdBj$,5/$-$d$9$$$+$b$7$l$^$;$s!#e(B  
> e$B$”$H!”%9%l%C%I$,$i$\_$@$H$“$k%”%W%j%1!\<%7%g%s$GLdBj$J$$$+$i$H$$$C$F!“e(B  
> e$BB\>$N%”%W%j%1!\<%7%g%s$GLdBj$J$$$H$O$$$($J$$$N$G!“J#?t$N%”%W%j%1!\<%7%g%se(B  
> e$B$G8!\>Z$7$?J}$,K\>$^$7$$$G$9$M!#e(B

e$B!!$3$l$OBg$-$J2]Bj$G$9!#%^%k%A%9%l%C%I$N\<j:“$J%F%9%H%9%$!\<%H$,e(B  
e$B$J$$$3$H$b$”$j$^$9$,!"%G%P%C%0$N$7$K$/$5$bLdBj$G$9!#e(B

e$B!!5U$K!"$3$&$7$Fe(B Mutex e$B$de(B ConditionVariable  
e$B$r3HD%%i%$%V%i%j2=e(B  
e$B$9$k$3$H$G3F=hM}$r@)8f2\<$KCV$1$k$N$G!“Nc$($P%m%C%/$dJQ?t$NCM$Ne(B  
e$BJQ99$NA08e$G0U?^E\*$K%3%s%F%/%9%H%9%$%C%A$rH/@8$5$;!”%9%l%C%I!&e(B  
e$B%m%C%/!&JQ?t$N\>uBV$r%b%K%?$9$k$h$&$J5!G=$rIU2C$7$?$j$O$7$d$9$/e(B  
e$B$J$k$H;W$$$^$9!#e(B

> (7) e$B%a%s%F%Je(B
> 
> fastthreade$B$N%a%s%F%J$OC/$K$J$k$N$G$7$g$&$+e(B?

e$B!!Mn$ACe$/$^$G$O:n\<T$Ne(B MentTaLguY e$B$G$9!#%a!\<%k$G$d$j$H$j$7$Fe(B  
e$B$$$k8B$j%3%\_%e%K%1!\<%7%g%s$KLdBj$O$J$$$N$G!“2?$+$”$l$P5$7Z$Ke(B  
e$BO"Mm$7$F$"$2$F$/$@$5$$!#e(B

> e$B:G8e$NJ}$O%3!\<%I$H4X78$J$/$J$C$F$^$9$Me(B;p  
> e$BB\>$K$b2?$+$“$C$?$h$&$J5$$,$7$^$9$,!“K:$l$^$7$?!#e(B  
> e$BA4BNE\*$KCWL?E\*$JLdBj$,$”$k$o$1$G$O$J$$e(B(lib/thread.rbe$B$HF1$8DxEYe(B  
> e$B$K$O\>e\<j$/F0$-$=$&e(B)e$B$H;W$&$N$G$9$,!”$A$g$C$HIT0B$G$9!#e(B
> 
> e$B$H$$$C$F:#$N%?%$%\_%s%0$G%3!\<%I$r$$$8$k$N$b62$$$N$G$9$,!"$I$&$9$ke(B  
> e$B$Y$-$G$7$g$&$+!#e(B

e$B!!%F%9%HB%?J$N$?$ae(B ruby\_1\_8\_6 e$B$K$bF~$l$Fe(B preview  
e$B$7$F$b$i$C$Fe(B  
e$B$$$^$9$,!“$b$7LdBj$,8+$D$+$C$?\>l9g$K$O!”:G=\*%j%j!\<%9$Oe(B  
–disable-fastthread e$B$r%G%U%)%k%H$K$7$F=P2Y$9$k$3$H$K$7$F$$$^$9!#e(B

> 1.8.5e$B$b%a%s%F%J%s%9$5$l$k$3$H$G$9$7!"$3$N$^$^$($$$d$C$HF~$l$Fe(B  
> e$B$7$^$C$F$b$$$$$G$9$+$M!#e(B

e$B!!$O$$!“F1MM$Ke(B 1.8.6  
e$B$b%a%s%F%J%s%9$5$l$^$9!#%Q%C%A%j%j!\<%9e(B(-p#)  
e$B$H$$$&?7$7$$IJ\<A8~\>e%5%$%/%k$,$G$-$?$3$H$G!”\>/$73Z4QE\*$JJ}?K$Ke(B  
e$B$J$C$F$$$^$9!#e(B

e$B!!e(B1.8.6  
e$B:G=\*%j%j!\<%9$r$I$&$9$k$+$O!"0J\>e$N%l%S%e!\<7k2L$X$NBP1~$Ne(B  
e$BCf$G7h$a$?$$$H;W$$$^$9!#e(B

–  
/  
/\_\_ \_\_ [Akinori.org](http://Akinori.org) / [MUSHA.org](http://MUSHA.org)  
/ ) ) ) ) / [FreeBSD.org](http://FreeBSD.org) / [Ruby-lang.org](http://Ruby-lang.org)  
Akinori MUSHA aka / (\_ / ( (\_\_( @ [iDaemons.org](http://iDaemons.org) / and.or.jp

“Different eyes see different things,  
Different hearts beat on different strings –  
But there are times for you and me when all such things agree”

---

<div class="post-metadata">

**Author:** ![Shugo\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7ea924/32.png) [@Shugo\_M](https://www.ruby-forum.com/u/Shugo_M)\
**Post date:** [February 26, 2007, 8:19am UTC](https://www.ruby-forum.com/t/fastthread-b-k-d-f-b/86750/8 "2007-02-26T08:19:56Z")

</div>

e$B$^$D$b$He(B e$B$f$-$R$m$G$9e(B

In message “Re: [ruby-dev:30430] Re: fastthreade$B$K$D$$$Fe(B”  
on Mon, 26 Feb 2007 15:48:05 +0900, Shugo M.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) writes:

|e$B$"$H!"e(BMutex#unlocke$B$G%m%C%/Cf$G$O$J$+$C$?$H$-$Ke(Bselfe$B$NBe$o$j$Ke(Bnile$B$rJV$9e(B  
|e$B$H$3$m$^$G%_%j%8%J%k$HF1$8$K$7$F$"$k$H$3$m$K$A$g$C$H46F0$7$?$N$G$9$,!"e(B  
|e$B$3$l$C$F$=$b$=$b0U?^E_$@$C$?$s$G$7$g$&$+e(B? \> e$B$^$D$b$H$5$se(B

e$B3N$+$=$&$@$C$?$h$&$K;W$$$^$9!#e(B

---

<div class="post-metadata">

**Author:** ![Shugo\_M](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/7ea924/32.png) [@Shugo\_M](https://www.ruby-forum.com/u/Shugo_M)\
**Post date:** [February 26, 2007, 7:48am UTC](https://www.ruby-forum.com/t/fastthread-b-k-d-f-b/86750/9 "2007-02-26T07:48:54Z")

</div>

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

# e$B0lHV2\<$K$^$D$b$H$5$s$X$N\<ALd$,$"$j$^$9!#e(B

Akinori MUSHA wrote:

> > (1) rb\_thread\_wakeup()e$B$Ne(Brb\_rescue2()
> > 
> > rb\_thread\_wakeup()e$B$re(Brb\_rescue2()e$B$G\<B9T$7$Fe(BThreadErrore$B$rL5;k$9$ke(B  
> > e$B$h$&$K$7$F$$$^$9$,!“e(BTHREAD\_KILLEDe$B$J%9%l%C%I$O%9%-%C%W$7$F\<!$Ne(B  
> > e$B%9%l%C%I$re(Bwakeupe$B$7$J$$$H!”$@$l$be(BMutexe$B$r3MF@$G$-$J$/$J$C$F$^$:$$e(B  
> > e$B$h$&$J5$$,$7$^$9!#e(B
> 
> e$B!!JL%a!\<%k$NDL$j!"JV$jCM$r8+$F%k!\<%W$r7QB3$7$F$$$k$N$GBg\>fIW$=$&e(B  
> e$B$G$9$M!#e(B

e$B$O$$!"\<:Ni$7$^$7$?!#e(B

> > (2) Marshale$B$NBP1~e(B
> > 
> > Marshale$B$Ge(Blocke$B$G%V%m%C%/$7$F$$$k;~$K$be(Bdump/loade$B$G$-$k$h$&$K$J$C$Fe(B  
> > e$B$$$^$9$,!":#$Ne(BMutexe$B$G$Oe(Blocke$BCf$Oe(Bdump/loade$B$G$-$J$$$N$GHs8\_49$G$9$M!#e(B  
> > Javae$B$Ne(BObjecte$B$be(Bdump/loade$B$G$-$ke(B(Javae$B$@$H%b%K%?5!9=$Oe(BObjecte$B$KHw$o$C$Fe(B  
> > e$B$$$^$9e(B)e$B$N$GLdBj$J$$$H$O;W$&$N$G$9$,!"$3$NE@$K$D$$$F$O==J,8!F$$5$l$Fe(B  
> > e$B$$$^$9$G$7$g$&$+!#e(B
> 
> e$B!!5$$E$-$^$;$s$G$7$?!#8!F$$7$^$9!#e(B

e$B$?$V$s!“LdBj$J$$$H$O;W$&$N$G$9$,!#e(B  
e$B$I$A$i$+$H$$$&$H\>uBV$K$h$C$Fe(Bdumpe$B$G$-$?$j$G$-$J$+$C$?$j$9$ke(Blib/thread.rb  
e$B$NJ}$,$^$:$$$+$b$7$l$J$$$G$9$M!#e(B  
e$B$^$?!”$=$&$$$&5sF0$K0MB8$7$F$$$k%"%W%j%1!\<%7%g%s$O$?$V$s$J$$$s$8$c$J$$e(B  
e$B$+$H;W$$$^$9!#e(B

> e$B$J$$$3$H$b$"$j$^$9$,!"%G%P%C%0$N$7$K$/$5$bLdBj$G$9!#e(B  
> e$B%3!\<%I$r8+$k$+$.$j$Oe(Blib/thread.rbe$B$HF1$8$h$&$J5sF0$K$J$C$F$$$=$&$G$9$7!"e(B  
> Producer-Consumere$B$N4JC1$J%5%s%W%k$O$b$A$m$s$&$^$/F0$-$^$7$?!#e(B

> > (7) e$B%a%s%F%Je(B
> > 
> > fastthreade$B$N%a%s%F%J$OC/$K$J$k$N$G$7$g$&$+e(B?
> 
> e$B!!Mn$ACe$/$^$G$O:n\<T$Ne(B MentTaLguY e$B$G$9!#%a!\<%k$G$d$j$H$j$7$Fe(B  
> e$B$$$k8B$j%3%\_%e%K%1!\<%7%g%s$KLdBj$O$J$$$N$G!“2?$+$”$l$P5$7Z$Ke(B  
> e$BO"Mm$7$F$"$2$F$/$@$5$$!#e(B

e$BN;2r$G$9!#e(B  
commite$B8"$O:#$N$H$3$mI,MW$J$$$G$7$g$&$+e(B?

> e$B!!%F%9%HB%?J$N$?$ae(B ruby\_1\_8\_6 e$B$K$bF~$l$Fe(B preview e$B$7$F$b$i$C$Fe(B  
> e$B$$$^$9$,!"$b$7LdBj$,8+$D$+$C$?\>l9g$K$O!":G=\*%j%j!\<%9$Oe(B  
> –disable-fastthread e$B$r%G%U%)%k%H$K$7$F=P2Y$9$k$3$H$K$7$F$$$^$9!#e(B

e$B:#$N$H$3$m$=$&$9$Y$-M}M3$O$J$$$h$&$K;W$$$^$9!#e(B

> e$B!!e(B1.8.6 e$B:G=\*%j%j!\<%9$r$I$&$9$k$+$O!"0J\>e$N%l%S%e!\<7k2L$X$NBP1~$Ne(B  
> e$BCf$G7h$a$?$$$H;W$$$^$9!#e(B

e$B$\*\<j?t$G$9$,$h$m$7$/$\*4j$$$7$^$9!#e(B

e$B$"$H!"e(BMutex#unlocke$B$G%m%C%/Cf$G$O$J$+$C$?$H$-$Ke(Bselfe$B$NBe$o$j$Ke(Bnile$B$rJV$9e(B  
e$B$H$3$m$^$G%_%j%8%J%k$HF1$8$K$7$F$"$k$H$3$m$K$A$g$C$H46F0$7$?$N$G$9$,!"e(B  
e$B$3$l$C$F$=$b$=$b0U?^E_$@$C$?$s$G$7$g$&$+e(B? \> e$B$^$D$b$H$5$se(B

def unlock  
return unless @locked  
…  
self  
end

svn anne$B$9$k$He(Brev2e$B$Ne(BInitial  
revisione$B$+$i$N$h$&$J$N$G$9$,e(B…e$B!#e(B
