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…

Rubriigid:Alustus Tags:
  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

Please log in using one of these methods to post your comment:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Muuda )

Twitter picture

You are commenting using your Twitter account. Log Out / Muuda )

Facebook photo

You are commenting using your Facebook account. Log Out / Muuda )

Google+ photo

You are commenting using your Google+ account. Log Out / Muuda )

Connecting to %s

%d bloggers like this: