Parallel.For przy użyciu wskaźników.

0

Witam.

Mam następujący kod:

 
            Parallel.For(0, 700, i =>
            {
               unsafe
               {
                   int im = i * 700;
                   fixed (double* p1 = &tab1[0, 0], p2 = &tab2[0, 0], p3 = &tab3[0, 0])
                   {
                       for (int j = 0; j < 700; j++)
                           for (int r = 0; r < 700; r++)
                               *(p3 + im + j) += *(p1 + im + r) * (*(p2 + r * 700 + j));
                   }
               }
            }
            );

Kod przedstawia Dodawanie dwóch tablic o rozmiarze 700x700 przy użyciu wskaźników. Niestety nie jestem w stanie zrozumieć tego kodu. Szukam osoby, która byłaby wstanie wytłumaczyć mi o co tu chodzi? ;/
Z góry dzięki.

0

*(p3 + im + j) += (p1 + im + r) * ((p2 + r * 700 + j));

Nie wiem czemu ktoś tak tę linijkę zapisał, skoro można przejrzyściej:

p3[im+j] += p1[im+r] * p2[r*700+j];

1 użytkowników online, w tym zalogowanych: 0, gości: 1