Exemplo n.º 1
0
        public int CalcularNumeroGenes() {
            Worker[] workers = new Worker[this.numeroHilos];
            int elementosPorHilo = this.ADN.Length/numeroHilos;
            for (int i = 0; i < this.numeroHilos; i++)
            {
                workers[i] = new Worker(ref this.ADN, ref this.gen,
                    i * elementosPorHilo,
                    (i < this.numeroHilos - 1) ? ((i + 1) * elementosPorHilo - 1) : (this.ADN.Length - 1) /**último**/);
            }

            Thread[] hilos = new Thread[workers.Length];
            for(int i = 0; i < workers.Length; i++) 
            {
                hilos[i] = new Thread(workers[i].Calcular); 
                hilos[i].Name = "Worker Gen en ADN " + (i + 1); 
                hilos[i].Priority = ThreadPriority.BelowNormal; 
                hilos[i].Start();  
            }

            foreach (Thread hilo in hilos)
            {
                hilo.Join();
            }
            
            int resultado = 0;
            foreach (Worker worker in workers)
                resultado += worker.Resultado;
            return resultado;
        }
Exemplo n.º 2
0
        public double CalcularModulo() {
            Worker[] workers = new Worker[this.numeroHilos];
            int elementosPorHilo = this.vector.Length/numeroHilos;
            for (int i = 0; i < this.numeroHilos; i++)
            {
                workers[i] = new Worker(ref this.vector,
                    i * elementosPorHilo,
                    (i < this.numeroHilos - 1) ? ((i + 1) * elementosPorHilo - 1) : (this.vector.Length - 1) /**último**/);
            }

            Thread[] hilos = new Thread[workers.Length];
            for(int i = 0; i < workers.Length; i++) 
            {
                hilos[i] = new Thread(workers[i].Calcular); 
                hilos[i].Name = "Worker Vector Módulo " + (i + 1); 
                hilos[i].Priority = ThreadPriority.BelowNormal; 
                hilos[i].Start();  
            }

            foreach (Thread hilo in hilos)
            {
                hilo.Join();
            }
            
            long resultado = 0;
            foreach (Worker worker in workers)
                resultado += worker.Resultado;
            return Math.Sqrt(resultado);
        }