Пример #1
0
 protected override void OnLeave(Boolean write)
 {
     if (write)
     {
         VerifyOneWriter("Done writing while not writing!");
         VerifyNoReaders("Done writing while already reading!");
         InterlockedEx.BitTestAndReset(ref m_LockState, 31); // Remove the writer
     }
     else
     {
         VerifySomeReaders("Done reading while not reading!");
         VerifyNoWriters("Done reading while already writing!");
         Interlocked.Decrement(ref m_LockState); // Subtract a reader
     }
     InnerLock.Leave();
 }