so as I understand it, the only time this would fail is if the object is being deleted.  Is there a reason that an atomic is_dying boolean wouldn't work?  I'm just thinking checking one equality is faster than locking and unlocking every time we wake.