例如,方法如:Ruby类方法是否线程安全?
class MyClass
self.perform(id)
hash = doSomething(id)
doMoreStuff(hash)
return hash
end
end
我担心的是,如果我有多个线程调用MyClass.perform()
。对象hash
是否可能被另一个线程覆盖?换句话说,线程1调用doSomething
并获得返回的散列值{1 => 1}
。但之后线程2调用doSomething
并得到一个散列{2 => 2}
。现在会发生什么?线程1的哈希值是否更改为{2 => 2}
?
还是每个线程都可以在其自己的hash
上工作,这是其他线程无法触及的?假设doSomething
和doMoreStuff
已经是线程安全的。
如果重要,我使用的是Rails 3.0。
据我所知,例如,使用rails,它们不是 – macool
您能解释一下您对该方法有哪些线程安全性问题? –
另外,在方法结尾不需要'return'。如果你在最后一行只有'hash',那就是返回值。 –