2012-05-05 6 views
2

私はRubyでマルチスレッドプログラムに取り組んでいますが、簡単な質問をしたいだけです。Rubyでのマルチスレッドプログラミング

例えば、私はSchoolと呼ばれるクラスを持ち、他の2つのクラスはBoyGirlです。

School私はすべての男の子と女の子の出席を追跡するハッシュを持っています。 (彼らは個別に活性を有することができるように)、私は、私はすべての男の子と女の子のスレッドが参照して出席ハッシュへの変更を行うことができますしたい

各男の子/女の子にSchoolでスレッドを作ります。 (女の子が学校に来て、ハッシュで彼女の名前を確認して、ハッシュで彼女の名前を削除するとき)

私はスレッドロックを行うためにモニターを使うことができると知っていますが、だから私はすべてのスレッドがハッシュ変数を見て修正する方法がわからない。 (一種のC/Javaで静的など)

答えて

3

何かこのようありがとう:

threads = [] 
hash = {g:0,n:0} 
m = Mutex.new 

threads << Thread.new(optional_pass_by_value) do |value| 
    #do whatever 
    #modify hash 
    m.synchronize {hash[:g] += 1} #By using synchronize you get an atomic behavior 
    #Only one thread will be able to access and modify this hash at one time. 
end 

threads.each {|t| t.join} 
関連する問題