My threading concern

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.

Aaron Rustad wrote:

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.

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

[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.

···

On Saturday 09 April 2005 15:29, Aaron Rustad wrote:

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

--

Nicholas Seckar aka. Ulysses