Пример #1
0
        public void Run(NumberReader reader)
        {
            var results = new List<long>();
            var numbersToCheck = new BoundedBuffer<long>(bufferSize);

            StartComputationThreads(results, numbersToCheck);

            var progressMonitor = new ProgressMonitor(results,resultMutex);

            new Thread(progressMonitor.Run) {IsBackground = true}.Start();

            foreach (var value in reader.ReadIntegers()) {
                numbersToCheck.Produce (value);
            }

            while (numbersToCheck.Count() > 0) {
                Thread.Sleep(100); // wait for the computation to complete.
            }
            Console.WriteLine("{0} of the numbers were prime", progressMonitor.TotalCount);
        }