Esileht > Alustus > Rööp vs jada vs lõimed ehk alustus

Rööp vs jada vs lõimed ehk alustus


Tere tulemast minu uude blogisse, mis on pühendatud C# paralleelprogrammeerimisele ehk rööplemisele. See ajaveeb on mõeldud inimesele, kes on kodus C# kasutamises, kuid ei tea veel, mis see rööplemine on.

Selles ajaveebis kutsun ma teid koos minuga avastama fantastilist maailma. Tulge ja õppige iga blogikirjega natuke. Aga selles esimeses artiklis vaatame siis, mis selle kõige mõte on.

Niisiis, milleks mulle rööplemine?

Tavaline programmikood on jadakood, see tähendab, et järgmisele koodireale ei pääse protsessor enne kui eelmine on lõpetatud.

Taustalõimed tädi Maalil abis

Kuna juba ammusest ajast on leiutatud lõimlevad prosed, on programmeerijad õppinud panema ressursimahukaid ülesandeid taustalõimedesse.

Seda võiks võrrelda sellega, kui tädi Maalile tulevad sõbrannad külla. Muidugi hakatakse kohe süüa tegema ja teised memmed küsivad Maali käest, mida nad saaksid teha. Maali jagab kogenult käsklusi: “Väga hea. Laine, võta sina siis kartulid, koori ära ja keeda ära. Ja sina, Hermiine, tee kapsas ära. Mina tegelen lihaga.” Maali on pealõim ja Laine ning Hermiine on kõrvallõimed. Iga lõim jookseb omasoodu ja see, millal nad valmis saavad, on teistest lõimedest sõltumatu (eeldades, et neil on piisavalt ruumi ja pliidipinda).

Maali paneb memmed rööplema

Rööplemine on midagi lõimlemise ja jada vahepealset. Rööplemise korral tegelevad kõik saadaolevad lõimed ühe või mitme ette antud tööga ja rööplemine saab läbi kui kõik ülesanded on lõpetatud. Rööplemisülesanded võib ühendada jadasse tavaliste jadaülesannete vahele. Vaata nüüd meie memmesid.

Maali ütleb: “Esiteks paneme liha ahju, siis võtame kapsa ja kõige lõpus teeme kartuli.” Maali jagab memmedele välja lõikelauad ja noad, ja nad asuvad kolmekesi lihaga tegelema. Pärast võetakse ette kapsas ja seejärel koorivad memmed kibekähku kartulid ära. Kartulikoorimise ülesande lõpetavad kõik memmed ühekorraga, hetkel kui kõik kartulid on kooritud. Ja on selge, et see läheb kolm korda kiiremini. Memmed võivad koorida kartuleid erineva kiirusega ja iga memme kooritud kartulite hulk võib olla erinev, aga see pole oluline. Tähtis on, et igaüks annab panuse.

Rööplemise võlu

See ongi rööplemise võlu: pole oluline, millisele lõimele milline detail satub ja mis järjekorras neid käsitletakse, tähtis on, et saavutatakse ajavõit. Ülejäänu eest hoolitseb .NET.

Kui taustalõimede loomine ja selle jälgimine, millal need lõpetavad, on tavatehnikatega päris koodiküllane ettevõtmine, siis rööplemisega pole tarvis muud kui lihtsalt .NETile ütelda: “Teeme nüüd seda tööd mitmekesi.” Pärast ülesande täitmist võib jätkata rahumeeli jadas nagu varemgi.

Loe minu ajaveebi järgmisi artikleid, kus me hakkame rööplemist reaalselt katsetama.

  1. Kommentaare veel pole.
  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: