public ILockHolder Upgrade(bool waitForLock) { if(locker.IsWriteLockHeld) { return NoOpLock.Lock; } writerLock = new SlimWriteLockHolder(locker, waitForLock); return writerLock; }
public void Dispose() { if (writerLock != null && writerLock.LockAcquired) { writerLock.Dispose(); writerLock = null; } if (!LockAcquired) return; if (!wasLockAlreadyHeld) { locker.ExitUpgradeableReadLock(); } lockAcquired = false; }