sql >> Base de Datos >  >> RDS >> PostgreSQL

PLINQ en ConcurrentQueue no es multiproceso

Está paralelizando solo la enumeración de assertQueue mismo y luego "desparalelizarlo" de nuevo en un IEnumerable ordinario . Todo esto sucede antes del foreach el bucle incluso comienza. Luego usas el IEnumerable ordinario con el foreach que ejecuta el cuerpo del ciclo en serie.

Hay muchas formas de ejecutar el cuerpo del bucle en paralelo, pero la primera que me viene a la mente es usar Parallel.ForEach :

Parallel.ForEach(arrestQueue, arrest =>
    {
        Geocoder geocodeThis = new Geocoder(arrest);
        writeQueue.Enqueue(geocodeThis.Geocode());
        Console.Out.WriteLine("Enqueued " + ++k);
    });