private static void ReleaseToken() { if (_barrier.Arrive()) { Console.WriteLine("\n Semaphore Channel Tests Commencing\n"); Console.WriteLine("**********************************************\n"); } while (!_finishedAcquiring) { SemaphoreTestRelease(); } if (_barrier.Arrive()) { _finishedAcquiring = false; Console.WriteLine("\n Channel Tests Commencing\n"); Console.WriteLine("**********************************************\n"); } while (!_finishedAcquiring) { ChannelTestEnqueue(); } if (_barrier.Arrive()) { _testsFinished = true; } }
private static void ReleaseToken() { if (_barrier.Arrive()) { Console.WriteLine("\n Semaphore Channel Tests Commencing\n"); Console.WriteLine("**********************************************\n"); } while (!_finishedAcquiring) { SemaphoreTestRelease(); } if (_barrier.Arrive()) { _finishedAcquiring = false; Console.WriteLine("\n Channel Tests Commencing\n"); Console.WriteLine("**********************************************\n"); } while (!_finishedAcquiring) { ChannelTestEnqueue(); } if (_barrier.Arrive()) { _finishedAcquiring = false; Console.WriteLine("\n Bounded Channel Tests Commencing\n"); Console.WriteLine("**********************************************\n"); } while (!_finishedAcquiring) { BoundedChannelTestEnqueue(); } if (_barrier.Arrive()) { Console.WriteLine("\n More Bounded Channel Tests Commencing\n"); Console.WriteLine("**********************************************\n"); } int bCTestCount = 0; while (bCTestCount < 5) { BoundedChannelTestEnqueueTimeOuts(); bCTestCount++; } }
public void DoCalculations() { for (int i = _startIdx + 1; i < _finishIdx; i++) { if (_myMin > _data [i]) { _myMin = _data [i]; } } for (int i = _startIdx + 1; i < _finishIdx; i++) { if (_myMax < _data [i]) { _myMax = _data [i]; } } for (int i = _startIdx; i < _finishIdx; i++) { _mySum += _data [i]; } if (_barrier.Arrive()) { int overallMin = _myMin; int overallMax = _myMax; int overallSum = 0; Console.WriteLine(Thread.CurrentThread.Name + ": Everyone has finished. Time to crunch data.\n"); foreach (Calculator calc in _calcs) { if (calc._myMin < overallMin) { overallMin = calc._myMin; } if (calc._myMax > overallMax) { overallMin = calc._myMax; } overallSum += calc._mySum; } Console.WriteLine(Thread.CurrentThread.Name + ": Min " + overallMin + " - Max " + overallMax + " - Sum " + overallSum + ".\n"); } }