Пример #1
0
        public void ScopeTest3()
        {
            int result = 0;
            ReaderWriterLockSlim locker = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);

            Parallel.For(0, 100, (_) =>
            {
                using (var scope1 = new ReaderWriterLockScope(locker, ReaderWriterLockMode.Read))
                {
                    result = _;
                }
            });
        }
Пример #2
0
        public void ScopeTest1()
        {
            int result = 0;
            ReaderWriterLockSlim locker = new ReaderWriterLockSlim();

            Parallel.For(0, 100, (_) =>
            {
                using (var scope = new ReaderWriterLockScope(locker, ReaderWriterLockMode.Write))
                {
                    result++;
                }
            });
            Assert.Equal(100, result);
        }
Пример #3
0
        public void ScopeTest2()
        {
            int result = 0;
            ReaderWriterLockSlim locker = new ReaderWriterLockSlim(LockRecursionPolicy.SupportsRecursion);

            Parallel.For(0, 100, (_) =>
            {
                using (var scope1 = new ReaderWriterLockScope(locker, ReaderWriterLockMode.Write))
                {
                    result++;
                    using (var scope2 = new ReaderWriterLockScope(locker, ReaderWriterLockMode.Write))
                    {
                        result++;
                    }
                }
            });
            Assert.Equal(200, result);
        }
Пример #4
0
 public SynchronizedKetamaPool(string name, IHashAlgorithmProvider hashAlgorithmProvider, int timeout)
     : base(name, hashAlgorithmProvider)
 {
     m_timeout   = timeout;
     m_lockScope = new ReaderWriterLockScope(new ReaderWriterLock());
 }