U parallelliseert alleen de opsomming van de assertQueue
zichzelf en vervolgens "ongeëvenaard" het terug in een gewoon IEnumerable
. Dit gebeurt allemaal vóór de foreach
lus begint zelfs. Dan gebruik je de gewone IEnumerable
met de foreach
die de body van de lus serieel uitvoert.
Er zijn veel manieren om de body van de lus parallel te laten lopen, maar de eerste die in je opkomt is het gebruik van Parallel.ForEach
:
Parallel.ForEach(arrestQueue, arrest =>
{
Geocoder geocodeThis = new Geocoder(arrest);
writeQueue.Enqueue(geocodeThis.Geocode());
Console.Out.WriteLine("Enqueued " + ++k);
});