using System;
using System.Linq;
namespace MakingParallelQuerySequential
{
class Program
{
static void Main(string[] args)
{
var numbers = Enumerable.Range(0, 20);
var parallelResult = numbers.AsParallel()
.Where(i => i % 2 == 0);
// con Take, usted define cuantos resultados desea obtener
foreach (int i in parallelResult.Take(5)) Console.WriteLine(i);
}
}
}
Al ejecutar puede ver el resultado de la consulta, la cual no se encuentra en un orden en particular. El resultado del código depende los recursos disponibles del CPU. Si usted quiere asegurar de que los resultados se encuentren ordenados use el operador AsOrdered. El proceso se ejecuta de forma paralela, pero el resultado es colocado en un buffer y ordenado. Como se ve en el siguiente ejemplo.
using System;
using System.Linq;
namespace MakingParallelQuerySequential
{
class Program
{
static void Main(string[] args)
{
var numbers = Enumerable.Range(0, 20);
var parallelResult = numbers.AsParallel().AsOrdered()
.Where(i => i % 2 == 0);
// con Take, usted define cuantos resultados desea obtener
foreach (int i in parallelResult.Take(5)) Console.WriteLine(i);
}
}
}
Si usted tiene una consulta compleja que pueda beneficiarse del procesamiento en paralelo pero tiene algunas partes que deberían ser realizados en forma secuencia, puede usar AsSequential.
using System;
using System.Linq;
namespace MakingParallelQuerySequential
{
class Program
{
static void Main(string[] args)
{
var numbers = Enumerable.Range(0, 20);
var parallelResult = numbers.AsParallel().AsOrdered()
.Where(i => i % 2 == 0).AsSequential();
// con Take, usted define cuantos resultados desea obtener
foreach (int i in parallelResult.Take(5)) Console.WriteLine(i);
}
}
}
Referencia:
Exam Ref 70-483 Programming in C#
Exam Ref 70-483 Programming in C#
No hay comentarios.:
Publicar un comentario