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; }
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); }