superclass=Object
type=class
library=_builtin
extended=
included=

åɤɽ饹ǤåɤȤϥ֤ͭƱ˼¹ԤήǤ
Thread ȤȤ¹ԥץߥ󥰤ǽˤʤޤ


=== 
Ruby Υåɤϥ桼٥ǼƤꡢ
ץåȥۡˤƱư򼨤ޤ
Ruby 󥿥ץ꥿ϻʬǥåɤ¹ԤޤΤǡ
åɤȤȤǼ¹®٤®ʤ뤳ȤϤޤ

=== 塼
Ruby Υåɥ塼󥰤ͥդΥ饦ɥӥǤ
衢뤤ϼ¹Υåɤߥ󥰤ǥ塼
󥰤Ԥ졢λǼ¹ԲǽʥåɤΤǤ̤ͥ⤤
Τ˥ƥȤܤޤ

=== ᥤ󥹥å

ץγϤƱ륹åɤ֥ᥤ󥹥åɡפȸ
Ӥޤʤ餫ͳǥᥤ󥹥åɤλˤϡ¾ƤΥ
ɤץΤ⽪λޤ桼γߤˤäȯ㳰
ϥᥤ󥹥åɤޤ

=== åɤνλ

åɤεư˻ꤷ֥åμ¹Ԥλȥåɤμ¹Ԥ⽪
λޤ֥åνλʽλ㳰ʤɤˤ۾ｪλޤߤޤ

===[a:exception] 㳰ȯΥåɤο

륹åɤ㳰ȯΥå rescue ªʤ
硢̾ϤΥåɤʤˤٹʤ˽λޤ
㳰ǽλ륹åɤ [[m:Thread#join]] ԤäƤ¾
åɤ硢ԤäƤ륹åɤФơƱ㳰
ȯޤ

  begin
    t = Thread.new do
      Thread.pass    # ᥤ󥹥åɤμ¤join褦
      raise "unhandled exception"
    end
    t.join
  rescue
    p $!  # => "unhandled exception"
  end

ޤʲ 3 Ĥˡˤꡢ줫Υåɤ㳰ˤäƽ
λˡ󥿥ץ꥿ΤǤ褦˻ꤹ뤳ȤǤ


  * Ȥ߹ѿ [[m:$DEBUG]] 򿿤ꤹ(ǥХå⡼)
    ruby 󥿥ץ꥿ [[unknown:Rubyεư/-d]] դǵưƱ͡
  * [[m:Thread.abort_on_exception]] ǥե饰ꤹ롣
  * [[m:Thread#abort_on_exception]] ǻ
    åɤΥե饰ꤹ롣

嵭3ĤΤ줫ꤵƤ硢󥿥ץ꥿ΤǤޤ

=== åɽλ ensure μ¹

åɽλˤ ensure ᤬¹Ԥޤ
ϥåɤ˽λϤǤ¾Υåɤ [[m:Thread#kill]]
ʤɤˤäƽλ줿Ʊͤ˼¹Ԥޤ[[m:Thread#kill!]] ƤФ줿
ensure ᤬¹Ԥޤ

ᥤ󥹥åɤФ [[m:Thread#kill!]] ƤФƤ ensure ᤬¹Ԥޤ
ᥤ󥹥åɤνλξܺ٤˴ؤƤ [[d:spec/terminate]] 򻲾ȤƲ

=== åɤξ

ġΥåɤϡʲμ¹Ծ֤ޤξ֤
[[m:Object#inspect]] 
[[m:Thread#status]] ˤäƸ뤳ȤǤޤ

 p Thread.new {sleep 1} # => #<Thread:0xa039de0 sleep>

: run (¹or¹Բǽ)
 줿ФΥåɤ [[m:Thread#run]] 
 [[m:Thread#wakeup]] ǵ줿åɤϤξ֤Ǥ
 [[m:Thread#join]] ǥåɤνλԤäƤ륹åɤ⥹åɤ
 λˤꤳξ֤ˤʤޤ
 
 ξ֤Υåɤϡơפޤ

: sleep (߾)
 [[m:Thread.stop]]  [[m:Thread#join]] ˤߤ줿
 ɤϤξ֤ˤʤޤ
 
 ξ֤Υåɤϡơפޤ

: aborting (λ)
 [[m:Thread#kill]] ǽλ륹åɤϰŪˤξ֤ˤʤ
 ξ֤߾(sleep)ˤʤ뤳Ȥ⤢ޤ
 
 ξ֤ΥåɤϤޤơפޤ

: dead (λ)
 [[m:Thread#kill]] ǽλåɤϤξ֤ˤʤޤξ
 ֤ΥåɤϤɤ⻲ȤƤʤ GC ˤ夫
 ʤʤޤ
 
 ξ֤Υåɤϡֻǡפޤ


=== ǥåɥåθ
ruby ϥǥåɥå򸡽Фޤǥåɥå򸡽Ф硢㳰 [[c:fatal]] 
ȯƥץϽλޤǥåɥåξϰʲΤȤǤ

  * åɤʣ
  * ٤ƤΥåɤ sleep (߾) Ǥ
  * ٤ƤΥåɤ IO ԤǤʤ

ᥤ󥹥åɤ [[m:Thread.stop]] ߤƤ֤ sleep forever Ʊȸʤ
fatal ȯޤ
