On May 4, 2006, at 6:40 AM, James Edward Gray II wrote: > On May 4, 2006, at 7:34 AM, Robert Klemme wrote: > >> 2006/5/3, Eric Hodel <drbrain / segment7.net>: >>> On May 3, 2006, at 12:58 PM, Trish Ball wrote: >>> >>> > I am new to concurrency issues, and am working with DRb (also >>> new to >>> > this). My DRb class assigns a value to an instance variable >>> that will >>> > be accessed by my client. Is there a possibility with a >>> concurrency >>> > issue if the client tries the access that variable when it is >>> being >>> > assigned. >>> >>> No. >>> >>> > @list = LabelList.new(@label_list) >>> > >>> > Will I need a mutex around this? >>> >>> It will see either the old value or the new value. Nothing will >>> break otherwise. >> >> IMHO this cannot be answered correctly with the information we >> have so >> far. > > The example had one client reading the value and one server setting > it. Under those circumstances, I think Eric's answer is right on. > >> You are right with regard to assignment semantics (i.e. >> assignment is atomic in current Ruby runtime) > > I'm fairly certain assignment is not an atomic action in Ruby. > There's a pretty good example of this on page 142 of the PickAxe > (2nd Edition). Assignment is atomic. The example in the pickaxe shows that += is not atomic because it is two operations, not one. When performing similar operations the code will need to be wrapped in a Mutex. -- Eric Hodel - drbrain / segment7.net - http://blog.segment7.net This implementation is HODEL-HASH-9600 compliant http://trackmap.robotcoop.com