From: Robert Klemme Date: 2010-03-08T02:20:06+09:00 Subject: Re: Weakref: can I use it like this? On 03/07/2010 10:55 AM, Jeremy Henty wrote: > I want to do some extended processing on an object referred to by a > weakref. This might generate lots of garbage so I don't want to turn > off garbage collection while I'm doing this. So I'd really like to > get a proper non-weak reference to the weakref-ed object (assuming > it's not *already* garbage-collected). Is it safe to do this? > > obj = weakref.__getobj__ # will raise error if weakref is invalid > process obj > > I'm hoping this will ensure that if the process method is called then > it gets a real reference to the weakref-ed object, so that it can > safely execute even though garbage collection is still on. I'm also > hoping that once the binding of the obj variable goes out of scope > then the object is available for garbage collection again. > > Will this work as I expect? Is it thread-safe? Portable across > different Ruby implementations? Have I missed some race condition? I think that's exactly the way it should be done. Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/