public void ReaderWriterAttribute_WhenDeadlocked_Throws() { ReaderWriterAttributeClass rw = new ReaderWriterAttributeClass(); Barrier barrier = new Barrier(2); int i = 0; Action t1 = () => rw.Read( () => { barrier.SignalAndWait(); lock (rw) { i = 1; } }); Action t2 = () => { lock (rw) { barrier.SignalAndWait(); rw.Write(i, () => { }); } }; TestHelpers.InvokeSimultaneouslyAndWaitForDeadlockDetection(t1, t2); }
public void ObserverAndReadFromWriteMethod_DoesNotThrow() { ReaderWriterAttributeClass rw = new ReaderWriterAttributeClass(); rw.Write(1, () => { rw.Observe(() => { }); rw.Read(() => { }); }); }
public void WriteLockLockAcquiredFromReadMethod_DoesThrow() { ReaderWriterAttributeClass rw = new ReaderWriterAttributeClass(); rw.Read(() => rw.Write(0, () => { })); }
public void ReaderLockAcquiredFromUpgradeableMethod_DoesNotThrow() { ReaderWriterAttributeClass rw = new ReaderWriterAttributeClass(); rw.UpgradeableRead(() => rw.Read(() => { })); }
public void ReaderLockAcquiredFromWriterMethod_DoesNotThrow() { ReaderWriterAttributeClass rw = new ReaderWriterAttributeClass(); rw.Write(0, () => rw.Read(() => { })); }
public void ReaderLockAcquiredFromWriterMethod_DoesNotThrow() { ReaderWriterAttributeClass rw = new ReaderWriterAttributeClass(); rw.Write( 0, () => rw.Read( () => { } ) ); }
public void ObserverAndReadFromWriteMethod_DoesNotThrow() { ReaderWriterAttributeClass rw = new ReaderWriterAttributeClass(); rw.Write(1, () => { rw.Observe( () => { } ); rw.Read( () => { } ); } ); }