Hatena::Grouparaistudy

czk-htnの日記

2006-08-14

[] 11.スレッドとプロセス

11.1マルチスレッド

スレッドハッシュ変数のように扱えるってのはおもしろい。

下の例ではThread.currentでスレッドオブジェクトを取得し、ハッシュのようにしてmycountに変数を代入している。またarr.eachで各要素がスレッドオブジェクトなのでこれもハッシュのようにアクセスできる。

count = 0
arr = []
10.times do |i|
  arr[i] = Thread.new {
    sleep(rand(0)/10.0)
    Thread.current["mycount"] = count
    count += 1
  }
end
arr.each { |t| t.join; print t["mycount"], ", " }
puts "count = #{count}"
% ruby work/ruby/sec11/sample01.rb
6, 0, 2, 3, 9, 7, 4, 8, 5, 1, count = 10
トラックバック - http://araistudy.g.hatena.ne.jp/czk-htn/20060814