From 83d405c8d5f1cd1466bda1f86294e82b1aef58a1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marek=20Lema=C5=84czyk?= Date: Sat, 20 Sep 2025 00:03:53 +0200 Subject: [PATCH] Fix worker index capture in results splitting --- .../Program.cs | 49 ++++++++++--------- 1 file changed, 25 insertions(+), 24 deletions(-) diff --git a/EvenPerfectBitScanner.ResultsParser/Program.cs b/EvenPerfectBitScanner.ResultsParser/Program.cs index 68c078b..db2ace1 100644 --- a/EvenPerfectBitScanner.ResultsParser/Program.cs +++ b/EvenPerfectBitScanner.ResultsParser/Program.cs @@ -625,11 +625,11 @@ internal static class Program int start = 0; int baseChunk = count / workerCount; int remainder = count % workerCount; - for (int worker = 0; worker < workerCount; worker++) - { - int length = baseChunk + (worker < remainder ? 1 : 0); - int chunkStart = start; - start += length; + for (int worker = 0; worker < workerCount; worker++) + { + int length = baseChunk + (worker < remainder ? 1 : 0); + int chunkStart = start; + start += length; if (length == 0) { @@ -639,27 +639,28 @@ internal static class Program continue; } - tasks[worker] = Task.Run(() => - { - List localPassed = new(length); - List localRejected = new(length); - int end = chunkStart + length; - for (int i = chunkStart; i < end; i++) - { - CandidateResult candidate = sortedResults[i]; - if (candidate.PassedAllTests) - { - localPassed.Add(candidate); - continue; - } + int workerIndex = worker; + tasks[workerIndex] = Task.Run(() => + { + List localPassed = new(length); + List localRejected = new(length); + int end = chunkStart + length; + for (int i = chunkStart; i < end; i++) + { + CandidateResult candidate = sortedResults[i]; + if (candidate.PassedAllTests) + { + localPassed.Add(candidate); + continue; + } - localRejected.Add(candidate); - } + localRejected.Add(candidate); + } - passedSegments[worker] = localPassed; - rejectedSegments[worker] = localRejected; - }); - } + passedSegments[workerIndex] = localPassed; + rejectedSegments[workerIndex] = localRejected; + }); + } Task.WaitAll(tasks);