public void ReaderWriterWithObserverEvent_WhenDeadlocked_Throws() { ReaderWriterWithObserverEventClass rw = new ReaderWriterWithObserverEventClass(); Barrier barrier = new Barrier(2); rw.OnWrite += () => { Task t = new Task( () => { lock (rw) { barrier.SignalAndWait(); rw.Write(1); } }); t.Start(); barrier.SignalAndWait(); lock (rw) { } }; rw.Write(100); //rw.Read( 100 ); }
public void ReaderWriterObserverEventTest() { ReaderWriterWithObserverEventClass rw = new ReaderWriterWithObserverEventClass(); ManualResetEventSlim mrEvent = new ManualResetEventSlim(false); rw.OnWrite += mrEvent.Set; rw.Write(100); mrEvent.Wait(); }
public void ReaderWriterObserverEventTest() { ReaderWriterWithObserverEventClass rw = new ReaderWriterWithObserverEventClass(); ManualResetEventSlim mrEvent = new ManualResetEventSlim( false ); rw.OnWrite += mrEvent.Set; rw.Write( 100 ); mrEvent.Wait(); }
public void ReaderWriterWithObserverEvent_WhenDeadlocked_Throws() { ReaderWriterWithObserverEventClass rw = new ReaderWriterWithObserverEventClass(); Barrier barrier = new Barrier(2); rw.OnWrite += () => { Task t = new Task( () => { lock (rw) { barrier.SignalAndWait(); rw.Write(1); } }); t.Start(); barrier.SignalAndWait(); lock (rw) { } }; rw.Write(100); //rw.Read( 100 ); }