public void Signal_signal_then_wait_wait_wait() { MonitorSemaphore monitor = new MonitorSemaphore(); monitor.Signal(); monitor.Signal(); var timeout = monitor.Wait(TimeSpan.FromSeconds(1)); Assert.IsTrue(timeout, "timeout 1 should not have occurred"); timeout = monitor.Wait(TimeSpan.FromSeconds(1)); Assert.IsTrue(timeout, "timeout 2 should not have occurred"); timeout = monitor.Wait(TimeSpan.FromSeconds(1)); Assert.IsFalse(timeout, "timeout 3 should have occurred"); }
public void Wait_then_Signal() { MonitorSemaphore monitor = new MonitorSemaphore(); new Thread(() => { Thread.Sleep(100); monitor.Signal(); }).Start(); var timeout = monitor.Wait(TimeSpan.FromSeconds(3)); Assert.IsTrue(timeout, "timeout should not have occurred"); }