image

Rööp-C#

Esimene postitus: 4.02.2011

See leht on mõeldud C# paralleelprogrammeerimise ehk rööplemise õppimiseks. Tule ja õpi koos minuga seda fantastilist uut vahendit tundma ja kasutama.

image

Rööpülesannete katkestamine

Rööpülesanded jooksevad üksteisest sõltumatult. Kui ühes ülesandes visatakse erand, ei takista see teistel ülesannetel edasi jooksmast. Erandid kogutakse kokku ja jõuavad pealõime. Vaata seda näidet ühest kasutust programmist, kus iga lõim viskab poole täitmise pealt erandi: static void Do() {   for (int i = 0; i     if (i >= 50)       throw new OperationCanceledException(); } static ... Loe edasi

  • Visual Studio,
  • arendus
image

Rööpülesannete algväärtustamine

Rööplemine toimub eraldi lõimedes, ja juhtumitel, kui on tarvis ligi pääseda objektile, mis ei ole lõimeturvaline, peaks selle objekti lukustama, aga see võib viia olukorda, kus rööplemisest ei ole mingit tolku, kuna kõik lõimed istuvad ikka ühes järjekorras. Siin tuleb abiks rööplõimede algväärtustamine, kus igale ülesandele saab luua oma objektid. Kõige lihtsam näide, kus seda võib vaja ... Loe edasi

  • .NET,
  • ASP.NET,
  • arendus
image

Koondfunktsioonid ja pudelikael

LINQ koos oma koondfunktsioonidega on suurepärane asi. Rööpes on sama asi saadaval nime all PLINQ (Parallel LINQ). See kattub suuremas osas jada-LINQiga, seega on see asjaga tuttavale väga lihtne kasutada. Ainuke küsimus, mis tekib, on see, kuhu kirjutada AsParallel(). Tooksin ühe keerulisema praktilise näite, millega saate katsetada. Oletame, et meil on sotsiaalvõrgustik, kus igal inimesel ... Loe edasi

  • .NET,
  • ASP.NET,
  • arendus
image

Rööpsusastme piiramine

Eelmises blogis vaatlesime, kuidas rööpe sektsioonimisega võib ehitada jadakoodi sektsioone ja piirata rööbete arvu. Tegelikult on .NETis olemas ka spetsiaalsed parameetrid. double[] values = new double[10000]; Listint> threadids = new Listint>(); values.AsParallel().WithDegreeOfParallelism(5).ForAll(value => { int id = ... Loe edasi

  • .NET,
  • ASP.NET,
  • arendus
image

Rööpe sektsioonimine

Väikese ressursinõudlusega rööpsilmuste puhul võib tekkida probleem, kus rööbete käivitamisele kulub rohkem auru kui on kasu nende tööst. Selle probleemi vältimiseks võimaldab rööp-C# rööbete sektsioonimist (inglise keeles partitioning). Sektsioonimiseks tuleb teha using System.Collections.Concurrent. Vaata alltoodud näidet, kus on kõrvutatud 3 varianti ruutjuure võtmiseks: static void ... Loe edasi

  • .NET,
  • ASP.NET,
  • arendus