private long lockVersion; // volatile internal LockManager(IAsyncLockSettings configuration) { state = new(configuration.ConcurrencyLevel); lockVersion = long.MinValue; // setup metrics if (configuration.LockContentionCounter is not null) { LockContentionCounter = configuration.LockContentionCounter; } if (configuration.LockDurationCounter is not null) { LockDurationCounter = configuration.LockDurationCounter; } }
private long lockVersion; // volatile internal LockManager(IAsyncLockSettings configuration) { state = new(configuration.ConcurrencyLevel); acquireReadLock = LockState.TryAcquireReadLock; releaseReadLock = LockState.ReleaseReadLock; acquireWriteLock = LockState.TryAcquireWriteLock; releaseWriteLock = LockState.ReleaseWriteLock; acquireCompactionLock = LockState.TryAcquireCompactionLock; releaseCompactionLock = LockState.ReleaseCompactionLock; acquireExclusiveLock = LockState.TryAcquireExclusiveLock; releaseExclusiveLock = LockState.ReleaseExclusiveLock; lockVersion = long.MinValue; // setup metrics if (configuration.LockContentionCounter is not null) { LockContentionCounter = configuration.LockContentionCounter; } if (configuration.LockDurationCounter is not null) { LockDurationCounter = configuration.LockDurationCounter; } }