Na przykład, metody, takie jak:Czy metody klasy Ruby są wątkowo bezpieczne?
class MyClass
self.perform(id)
hash = doSomething(id)
doMoreStuff(hash)
return hash
end
end
Obawiam się, jeśli mam wiele wątków wzywające MyClass.perform()
. Czy obiekt hash
mógł zostać potencjalnie nadpisany przez inny wątek? Innymi słowy, wątek 1 wywołuje doSomething
i otrzymuje wartość skrótu z {1 => 1}
. Ale zaraz potem wątek 2 wywołuje doSomething
i otrzymuje skrót od {2 => 2}
. Co się teraz stanie? Czy skrót wątku 1 zmienił się na {2 => 2}
?
Lub czy każdy wątek działa samodzielnie hash
, który nigdy nie może zostać dotknięty przez inne wątki? Załóżmy, że doSomething
i doMoreStuff
są już wątkowo bezpieczne.
Jeśli to ma znaczenie, używam Rails 3.0.
Z tego co wiem, na przykład na szynach, nie są one – macool
Czy możesz wyjaśnić, jakie obawy związane z bezpieczeństwem gwintu masz w związku z tą metodą? –
Nie ma również potrzeby "powrotu" na końcu metody. Jeśli po prostu masz 'hash' w ostatnim wierszu, będzie to wartość zwracana. –