public void RowSynchronizesLockAll() { int threadId = Thread.CurrentThread.ManagedThreadId; bool exceptionThrown = true; var sync = new RowSynchronizer<int>(new BinConverter32()); using (var lock1 = sync.LockAll()) { Parallel.For(1, 12, delegate(int i) { try { if (Thread.CurrentThread.ManagedThreadId != threadId) using (var lock2 = sync.Lock(random.Next(), 100)) exceptionThrown = false; } catch (RowLockTimeoutException) { exceptionThrown &= true; } }); } Assert.IsTrue(exceptionThrown); }
public void RowSynchronizesTryLockAllWillReturnFalse() { int threadId = Thread.CurrentThread.ManagedThreadId; bool exceptionThrown = true; var sync = new RowSynchronizer<int>(new BinConverter32()); RowLock<int> rowLock; using (var lock1 = sync.LockAll()) { Parallel.For(1, 12, delegate(int i) { try { if (Thread.CurrentThread.ManagedThreadId != threadId) Assert.IsFalse(sync.TryLockAll(500, out rowLock)); } catch (RowLockTimeoutException) { exceptionThrown &= true; } }); Assert.IsTrue(exceptionThrown); } }