は、のような方法:私はMyClass.perform()
を呼び出す複数のスレッドがある場合Rubyクラスのメソッドはスレッドセーフですか?例えば
class MyClass
self.perform(id)
hash = doSomething(id)
doMoreStuff(hash)
return hash
end
end
私の懸念があります。オブジェクトhash
は別のスレッドによって上書きされる可能性がありますか?つまり、スレッド1はdoSomething
を呼び出して、{1 => 1}
のハッシュを返します。しかし直後にスレッド2はdoSomething
を呼び出し、{2 => 2}
というハッシュを取得します。今、何が起きた?スレッド1のハッシュは{2 => 2}
に変更されますか?
または、各スレッドは他のスレッドに決して触れることができない独自のhash
で動作しますか? doSomething
とdoMoreStuff
がすでにスレッドセーフであると仮定します。
重要な場合は、Rails 3.0を使用しています。
私が知っている限り、例えば、レールではありません。 – macool
このメソッドについてスレッドセーフに関する懸案事項を説明できますか? –
また、メソッドの最後に 'return'の必要はありません。最後の行に 'hash'があれば、それが戻り値になります。 –