private static void SemaphoreTestRelease() { switch (new Random().Next(2)) { case 0: { Stopwatch watch = new Stopwatch(); int timeUntilRelease = new Random().Next(8000); Console.WriteLine("\t" + "\t" + "\t" + Thread.CurrentThread.Name + ": I'm going to wait " + timeUntilRelease + " milliseconds to release a token."); watch.Start(); while (watch.ElapsedMilliseconds < timeUntilRelease) { } Console.WriteLine("\t" + "\t" + "\t" + "\t" + Thread.CurrentThread.Name + ": I'm releasing a token now!"); _testSemaphore.Release(); break; } case 1: { Console.WriteLine("\t" + "\t" + "\t" + "\t" + "\t" + Thread.CurrentThread.Name + ": Haha! I'm not going to release!"); _notGoingToRelease = true; while (_notGoingToRelease) { } break; } } }
private static void SemaphoreTestRelease() { Stopwatch watch = new Stopwatch(); int timeUntilRelease = new Random().Next(8000); Console.WriteLine("\t" + "\t" + "\t" + Thread.CurrentThread.Name + ": I'm going to wait " + timeUntilRelease + " milliseconds to release a token."); watch.Start(); while (watch.ElapsedMilliseconds < timeUntilRelease) { } Console.WriteLine("\t" + "\t" + "\t" + "\t" + Thread.CurrentThread.Name + ": I'm releasing a token now!"); _testSemaphore.Release(); }
private void Releasebutler() { Console.WriteLine("\t\t\t" + Thread.CurrentThread.Name + ": Thank you, butler. You may serve another."); _butler.Release(); Thread.Sleep(_rand.Next(100, 1500)); }