コード例 #1
0
            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;
                }
            }
コード例 #2
0
            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;
                }
            }