PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

PLINQ no ConcurrentQueue não é multithread


Você está paralelizando apenas a enumeração do assertQueue em si e, em seguida, "não paralelizando" de volta para um IEnumerable comum . Isso tudo acontece antes do foreach loop mesmo começa. Então você usa o IEnumerable comum com o foreach que executa o corpo do loop em série.

Existem muitas maneiras de executar o corpo do loop em paralelo, mas a primeira que vem à mente é usando Parallel.ForEach :
Parallel.ForEach(arrestQueue, arrest =>
    {
        Geocoder geocodeThis = new Geocoder(arrest);
        writeQueue.Enqueue(geocodeThis.Geocode());
        Console.Out.WriteLine("Enqueued " + ++k);
    });