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

            StartComputationThreads(results, numbersToCheck);

            var progressMonitor = new ProgressMonitor(results);

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

            reader.ReadIntegers(numbersToCheck);
            //foreach (var value in reader.ReadIntegers())
            //{
            //    lock (IsNumberPrimeCalculator.LockQueue)
            //    {
            //        numbersToCheck.Enqueue(value);
            //    }
            //}

            while (true) {
                bool keepGoing = true;
                lock (IsNumberPrimeCalculator.LockQueue)
                {
                    keepGoing = numbersToCheck.Count > 0;
                }
                if (keepGoing == false)
                {
                    break;
                }
                Thread.Sleep(100); // wait for the computation to complete.
            }
            Console.WriteLine("{0} of the numbers were prime", progressMonitor.TotalCount);
        }
Пример #2
0
        public void Run(NumberReader reader)
        {
            lock (synclock)
            {
                var results = new List<long>();
                var numbersToCheck = new Queue<long>();

                StartComputationThreads(results, numbersToCheck);

                var progressMonitor = new ProgressMonitor(results);

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

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

                while (numbersToCheck.Count > 0)
                {
                    Thread.Sleep(100); // wait for the computation to complete.
                }
                Console.WriteLine("{0} of the numbers were prime", progressMonitor.TotalCount);
            }
        }
Пример #3
0
        public void Run(NumberReader reader)
        {
            //Start Threads.
               StartComputationThreads(CalculatorboundBuffer.getResultList(), CalculatorboundBuffer.getQueueForNumbersToCheck());
               //Start Progress Monitor.
               var progressMonitor = new ProgressMonitor(CalculatorboundBuffer.getResultList());
               //Run background threads.
               new Thread(progressMonitor.Run) { IsBackground = true }.Start();
               //Read in numbers from notepad.
               reader.ReadIntegers(CalculatorboundBuffer.getQueueForNumbersToCheck());

               while (CalculatorboundBuffer.getQueueForNumbersToCheck().Count > 0)
            {
              Thread.Sleep(100);
            }

            Console.WriteLine("{0} of the numbers were prime", progressMonitor.TotalCount);
        }
Пример #4
0
        public void Run(NumberReader reader)
        {
            BoundBuff = new BoundBuffer<long>();

            StartComputationThreads(BoundBuff.GetList(), BoundBuff.GetQueue());

            var progressMonitor = new ProgressMonitor(BoundBuff.GetList());

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

            foreach (var value in reader.ReadIntegers()) {
                BoundBuff.Enqueue(value);
            }

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