private static void CalculationInTask(int jobNumber, int partitionSize, Barrier barrier, IList<string>[] coll, int loops, int[][] results)
{
LogBarrierInformation("CalculationInTask started", barrier);
for (int i = 0; i < loops; i++)
{
var data = new List<string>(coll[i]);
int start = jobNumber * partitionSize;
int end = start + partitionSize;
WriteLine($"Task {Task.CurrentId} in loop {i}: partition from {start} to {end}");
for (int j = start; j < end; j++)
{
char c = data[j][0];
results[i][c - 97]++;
}
WriteLine($"Calculation completed from task {Task.CurrentId} in loop {i}. " +
$"{results[i][0]} times a, {results[i][25]} times z");
LogBarrierInformation("sending signal and wait for all", barrier);
barrier.SignalAndWait();
LogBarrierInformation("waiting completed", barrier);
}
barrier.RemoveParticipant();
LogBarrierInformation("finished task, removed participant", barrier);
}