Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

My threading concern.

0 views
Skip to first unread message

Aaron Rustad

unread,
Apr 9, 2005, 3:28:58 PM4/9/05
to
When two theads enter a method that can change a value of an instance
variable, does the possiblity exist that one thread's changes will
clobber the other's?

The reason stems from the ApplicationController of Rails, when a
request is received, the request is handled by a method that has access
to instance variables (session, request, params). Coming from the
Java/Struts world, this is a concern, and methods should not access
instance variables.

Is there a different model of theading in Ruby, or, would I be missing
something in Rails.

thanks!
AR.

Kirk Haines

unread,
Apr 9, 2005, 4:14:23 PM4/9/05
to
Aaron Rustad wrote:

Threading is no different in Ruby than it is in other languages, with regard
to guarding against concurrent access.

If there is a section of code that should only be accessed in a serial
fashion, control that access with a Mutex:

m = Mutex.new
m.synchronize do
@foo.update
@bar.count += 1
end

Ruby provides a rich set of support beyond mutexes for dealing with
threading issues, should you need them.


Kirk Haines

Nicholas Seckar

unread,
Apr 9, 2005, 4:21:10 PM4/9/05
to
On Saturday 09 April 2005 15:29, Aaron Rustad wrote:

> The reason stems from the ApplicationController of Rails, when a
> request is received

[continuing] a new Controller instance is created, and the related instance
variables are those of this new instance. A controller instance is not reused
for multiple requests.

If you'd like to read the source, see actionpack/lib/action_controller/base.rb
Look for "def process" -- it a class method of Controller.

--

Nicholas Seckar aka. Ulysses


0 new messages