Пример #1
0
 protected override void OnEnter(Boolean exclusive)
 {
     if (exclusive)
     {
         InnerLock.Enter(exclusive);
         VerifyNoWriters("Writing while already writing!");
         VerifyNoReaders("Writing while already reading!");
         InterlockedEx.BitTestAndSet(ref m_LockState, 31);       // Add the writer
     }
     else
     {
         InnerLock.Enter(exclusive);
         VerifyNoWriters("Reading while already writing!"); // Sanity check for no writers
         Interlocked.Increment(ref m_LockState);            // Add a reader
     }
 }