Mam następujący przykład, lecz do końca nie mogę zrozumieć jak działa tutaj równoległa pętla for.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ProgramowanieRownolegle
{
class Program
{
static private double obliczenia(double argument)
{
for(int i = 0; i < 10; ++i)
{
argument = Math.Asin(Math.Sin(argument));
}
return argument;
}
static void Main(string[] args)
{
int rozmiar = 10000;
Random r = new Random();
double[] tablica = new double[rozmiar];
for (int i = 0; i < tablica.Length; i++) tablica[i] = r.NextDouble();
int liczbaPowtorzen = 100;
double[] wyniki = new double[tablica.Length];
int start = System.Environment.TickCount;
/* for (int powtorzenia = 0; powtorzenia < liczbaPowtorzen; ++powtorzenia)
for (int i = 0; i < tablica.Length; ++i)
wyniki[i] = obliczenia(tablica[i]); */
for (int powtorzenia = 0; powtorzenia < liczbaPowtorzen; ++powtorzenia)
{
Parallel.For(0, tablica.Length, (int i) => wyniki[i] = obliczenia(tablica[i]));
}
int stop = System.Environment.TickCount;
Console.WriteLine("Obliczenia sekwencyjne trwały " + (stop - start).ToString() + " ms.");
}
}
}
Czy jednocześnie wykonuję się pętla, która jest w metodzie For i pętla która jest w metodzie obliczenia czy jednocześnie się wykonuję pętla dotyczącą powtórzeń i pętla, która jest w metodzie For ?