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 = _; } }); }
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); }
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); }
public SynchronizedKetamaPool(string name, IHashAlgorithmProvider hashAlgorithmProvider, int timeout) : base(name, hashAlgorithmProvider) { m_timeout = timeout; m_lockScope = new ReaderWriterLockScope(new ReaderWriterLock()); }