On Tue, 25 Apr 2006 20:53:01 +0300, Avi Kivity said: > Additionally, C++ guarantees that if an exception is thrown after > spin_lock() is called, then the spin_unlock() will also be called. > That's an interesting mechanism by itself. Gaak. So let me get this straight - We lock something, then we hit an exception because something corrupted the lock. Then we *unlock* it so more code can trip over it. Sometimes the correct semantic is to *leave it locked*.