Ruby中的多线程编程

时间:2012-05-05 18:23:32

标签: ruby multithreading parallel-processing

我正在研究Ruby中的多线程程序,只是想确定一个简单的问题。

例如,我有一个名为School的班级,另外两个班级是BoyGirl

School我有一个哈希记录所有男孩和女孩的出勤率。并且我使每个男孩/女孩成为School中的一个主题(这样他们可以单独进行活动)

我希望所有男孩和女孩线程都可以看到并更改出勤哈希值。 (就像一个女孩来到学校,在哈希中检查她的名字,当她离开时,在哈希中删除她的名字)

我知道我可以使用monitor进行线程锁定,但我不熟悉脚本语言,所以我不确定所有线程如何看到哈希变量并修改它们。 (有点像C / JAVA中的静态)

谢谢

1 个答案:

答案 0 :(得分: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}