I just started to learn about the Parallel.For() in c# and I have a function that doing something and I don't know how to adjust it to be Parallel. Can any anybody show me an example of such similar case?
Update:
for (int i = 0; i < (samples32array.Length); i += 35) //Delimiter Samples Length = SampleRate*DelimiterTimeLength,( i.e: 44100*0.2=8820 samples)
{
if ((i + (int)DelimiterSamplesCount - 1) > samples32array.Length)
{
break;
}
double power = MyGoertzel.GoertzelFilter(samples32array, i, i + (int)DelimiterSamplesCount - 1, coeffDelimiter);
if (power > max_power)
{
max_power = power;
max_power_index = i;
}
}
Update: this is my tryings but something is going wrong ...
private int delimiter_search_Parallel(float[] samples32array, int DelimiterSamplesCount, double DelimiterFreq)
{
double normalizedfreqDelimiter = DelimiterFreq / 44100;
double coeffDelimiter = 2 * Math.Cos(2 * Math.PI * normalizedfreqDelimiter);
double max_power = 0;
int max_power_index = 0;
List<double> powerParallelList = new List<double>();
List<int> powerParallelListIndex = new List<int>();
Parallel.For(0, samples32array.Length, (i, loopState) =>
{
if ((i + (int)DelimiterSamplesCount - 1) > samples32array.Length)
{
//TODO -> Genereate a Windows with ERROR Exception
loopState.Stop();
return;
}
else
{
double power = MyGoertzel.GoertzelFilter(samples32array, i, i + (int)DelimiterSamplesCount - 1, coeffDelimiter);
powerParallelList.Add(power);
powerParallelListIndex.Add(i);
}
}
);
max_power = powerParallelList.Max();
max_power_index = powerParallelListIndex[powerParallelList.IndexOf(max_power)];
return max_power_index;
}