Esileht > Alustus > Parallel.For()

Parallel.For()


Rööplemise katsetamiseks loo uus käsurearakendus. Sul läheb vaja Visual Studio 2010 ja .NET Framework 4. Võta menüüst File/New/Project ja sealt Visual C#/Windows/Console Application. Pane talle nimeks näiteks Rööp.

Paralleelprogrammeerimise vahendite namespace on System.Threading.Tasks.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Rööp
{
class Program
{
static void Main(string[] args)
{
Parallel.For(0, 100, i => Console.WriteLine(i));
Console.ReadLine();
}
}
}

See on sinu esimene rööprakendus. Sama asi jadas oleks

for (int i = 0; i < 100; i++) Console.WriteLine(i);

Milles on siis erinevus? Rööplemise korral kaasab .NET ülesande teostamisse kõik protsessorid. Proovi mõlemaid variante käivitada ja sa näed, et rööbeldes algab arvude loetelu küll ühest, kuid järjestus on suvaline (kuigi üldjoontes kasvav).

Samuti võid täheldada, et reeglite vastu pole eksitud (iga i väärtus esineb ainult ühe korra).

Ja veel võid ilmselt täheldada, et algus läheb üsna järjest 1, 2, 3, 4… kuni tööle hakkavad teised lõimed.

Kui nii rööplemine kui ka jada annavad sul täpselt sama tulemuse, on sul mingi veeuputusaegne arvuti, millel on võimalik ainult üks lõim Smile.

See lihtne katse tegi selgeks rööplemise kasu

Kujutle, et tegemist on tõeliselt aeganõudva ülesandega. Selle asemel et oodata, kuni üks prosetuum 100% peal seda krõmpsutab, võid kõik 8 tuuma tööle panna, millele peatselt järgneb ventilaatori pöörete tõus.

Kogu asja ilu on selles, et rööplemine saab läbi täpselt sel hetkel kui kõik lõimed on lõpetanud (ja nad lõpetavadki enam-vähem üheaegselt). Selle teostamine käsitsi tähendaks parajat portsu koodi, aga nüüd kulub selleks sama vähe vaeva kui jadakoodi puhul.

Vinge, kas pole? Stay tuned for more…

Advertisements
Rubriigid:Alustus Sildid:
  1. Madis
    5.02.2011, 13:08

    Proovisin Maci peal Mono 2.8.2ga ja töötab ka sellega.

  1. No trackbacks yet.

Lisa kommentaar

Kommenteerimiseks palun logi sisse, kasutades üht neist võimalustest:

WordPress.com Logo

Sa kommenteerid kasutades oma WordPress.com kontot. Logi välja / Muuda )

Twitter picture

Sa kommenteerid kasutades oma Twitter kontot. Logi välja / Muuda )

Facebook photo

Sa kommenteerid kasutades oma Facebook kontot. Logi välja / Muuda )

Google+ photo

Sa kommenteerid kasutades oma Google+ kontot. Logi välja / Muuda )

Connecting to %s

%d bloggers like this: