例如,方法如: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',那就是返回值。 –