2

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

たとえば、と呼ばれるクラスがあり、School他の2つのクラスはとです。BoyGirl

私はSchoolすべての男の子と女の子の出席を追跡するハッシュを持っています。そして、私はそれぞれの男の子/女の子をスレッドにしますSchool(彼らが個別に活動できるように)

すべての男の子と女の子のスレッドが出席ハッシュを表示して変更できるようにしたいと思います。(女の子が学校に来る場合のように、ハッシュで彼女の名前を確認し、彼女が去るとき、ハッシュで彼女の名前を削除します)

モニターを使用してスレッドロックを実行できることは知っていますが、スクリプト言語に精通していないため、すべてのスレッドがハッシュ変数を認識して変更する方法がわかりません。(C / JAVAの静的なもののようなもの)

ありがとうございました

4

1 に答える 1

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}
于 2012-05-05T18:51:50.043 に答える