Per esempio, metodi come:I metodi della classe Ruby sono thread-safe?
class MyClass
self.perform(id)
hash = doSomething(id)
doMoreStuff(hash)
return hash
end
end
La mia preoccupazione è se ho più thread di chiamata MyClass.perform()
. L'oggetto hash
potrebbe essere potenzialmente sovrascritto da un altro thread? In altre parole, Thread 1 chiama doSomething
e ottiene un hash restituito di {1 => 1}
. Ma subito dopo Thread 2 chiama doSomething
e ottiene un hash di {2 => 2}
. Che succede ora? L'hash del Thread 1 cambia in {2 => 2}
?
Oppure ogni thread funziona da solo hash
che non può mai essere toccato da altri thread? Si supponga che doSomething
e doMoreStuff
siano già thread-safe.
Se è importante, sto usando Rails 3.0.
Per quanto ne so, con le guide, ad esempio, non sono – macool
Puoi spiegare quali sono le preoccupazioni relative alla sicurezza dei thread riguardo al metodo? –
Inoltre, non c'è bisogno di 'return' alla fine del metodo. Se hai solo "hash" sull'ultima riga, questo sarà il valore di ritorno. –