Ruby Υåɤɽ륯饹Ǥ

Thread ȤȤ¹ԥץߥ󥰤ǽˤʤޤå
ϥ֤ͭƱ˼¹ԤήǤߤμ
Ǥ Ruby 󥿥ץ꥿ϻʬǥåɤ¹ԤޤΤǡåɤ
ȤȤǼ¹®٤®ʤ뤳ȤϤޤ

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

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

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

: åɤ㳰

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

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

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

    * Ȥ߹ѿ $DEBUG 򿿤ꤹ(ǥХå⡼)
      ruby 󥿥ץ꥿ -d դǵưƱ͡
    * Thread.abort_on_exception ǥե饰ꤹ롣
    * Thread#abort_on_exception [Thread/abort_on_exception] ǻ
      åɤΥե饰ꤹ롣
    嵭3ĤΤ줫ꤵƤ硢󥿥ץ꥿ΤǤޤ

: åɤξ

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

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

  : run (¹or¹Բǽ)

    줿ФΥåɤ run  
    wakeup ǵ줿åɤϤξ֤Ǥ
    join ǥåɤνλԤäƤ륹åɤ⥹åɤ
    λˤꤳξ֤ˤʤޤ

    ξ֤Υåɤϡơפޤ

  : sleep (߾)

    Thread.stop  join ˤߤ줿
    ɤϤξ֤ˤʤޤ

    ξ֤Υåɤϡơפޤ

  : aborting (λ)

    kill ǽλ륹åɤϰŪˤξ֤ˤʤ
    ξ֤߾(stop)ˤʤ뤳Ȥ⤢ޤ

    ξ֤ΥåɤϤޤơפޤ

  : dead (λ)

    kill ǽλåɤϤξ֤ˤʤޤξ
    ֤ΥåɤϤɤ⻲ȤƤʤ GC ˤ夫
    ʤʤޤ

    ξ֤Υåɤϡֻǡפޤ