Si s sejuhatus tpl raamistiku
This presentation is the property of its rightful owner.
Sponsored Links
1 / 29

Si s sejuhatus TPL raamistiku PowerPoint PPT Presentation


  • 74 Views
  • Uploaded on
  • Presentation posted in: General

Si s sejuhatus TPL raamistiku. Juri Mulenko Betgenius www.devclub.eu www.devclub.ee. Kava. Varasemad paralleel -t öötluse vahendid Task Parallel Library Taskide käivitamine Kombineerimine Tühistamine Vigade haldus Paar vihjet. Varasemad paralleel -t öötluse vahendid. Thread.

Download Presentation

Si s sejuhatus TPL raamistiku

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Si s sejuhatus tpl raamistiku

Sissejuhatus TPL raamistiku

JuriMulenko

Betgenius

www.devclub.euwww.devclub.ee


Si s sejuhatus tpl raamistiku

Kava

  • Varasemadparalleel-töötluse vahendid

  • Task Parallel Library

    • Taskide käivitamine

    • Kombineerimine

    • Tühistamine

    • Vigade haldus

    • Paar vihjet


Si s sejuhatus tpl raamistiku

Varasemadparalleel-töötluse vahendid


Thread

Thread


Threadpool

ThreadPool


Delegate 1 4

Delegate (1/4)


Beginxxx endxxx

BeginXXX / EndXXX


Si s sejuhatus tpl raamistiku

Muud

  • Veel 3 viisil delegaatide käivitamine

  • BeginXXX/EndXXX + Callback

  • WinformsBackgoundWorker

  • Oma ThreadPool

  • ... ?


Probleemid

Probleemid

  • Sarnasuse olemasolut kohe ei paista

  • Puudub üldine abstraktsioon

  • Keerulinekombineerida

  • Erinevad halduse viisid

    • Sünkroniseerimine

    • Tühistamine

    • Tulemuste analüüs


Si s sejuhatus tpl raamistiku

Task Parallel Library


Si s sejuhatus tpl raamistiku

TPL

Data

Parallelism

  • Parallel.For()

  • Parallel.ForEach()

PLINQ

  • ParallelQuery<T>

  • ParallelEnumerable extensions

  • .AsParallel()

Task

Parallelism


Si s sejuhatus tpl raamistiku

Everything is a Task


Si s sejuhatus tpl raamistiku

Task

  • Asünkroonse operatsiooni abstraktsioon

    = delegaatiAction/Funcümbrik !

  • Taskiümber on ehitatud rikkas API


K ivitamine

Käivitamine

  • var t = new Task(action);

    t.Start();

  • Task.Factory.StartNew(action);

  • Parallel.Invoke(action[]);


Seisund ja tulemus

Seisund ja tulemus

  • task.Result blokeerib thread’i kuni tulemus on kättesaadav

  • Töö kestel võib jälgida

    • task.Status

    • task.IsCompleted/IsCanceled/IsFaulted

  • Kasutame Task.WaitAll() / Task.WaitAny() mitmete taskide puhul


Kombineerimine

Kombineerimine

  • Jada ehitamine ContinueWith() abil

  • Sisemised taskid (Detached nested tasks)

  • Võsu taskid (Child tasks)


Continuewith

ContinueWith()

Task1

Task1

TaskN

Result

Result


Sisemised taskid

Sisemised taskid

Task 2

Task1

Task 3

Task 4

R

E

S

U

L

T


V su taskid

Võsu taskid

Task 2

Task1

TaskCreationOptions

.AttachedToParent

Task 3

Task 4

r

e

s

u

l

t


Si s sejuhatus tpl raamistiku

Tagasisidelehed


T histamine

Tühistamine

  • Luua CancellationTokenSourceja lugeda selle .Token omadust

  • Kasutada CancellationTokentaski käivitamisel

  • Taski sees lugeda token.IsCancellationRequestedomadust

  • KutsudaCancellationTokenSource.Cancel()kuisoovimetaski tühistada


Vigade haldus

Vigade haldus

  • Kõik vead on pakkitud AggregateExceptionsisse

  • Võsu taskide vead lastakse läbi vanematele

  • Sisemiste taskide vead – EI. Peame ise hallata.

  • Võib ka oodata, kuni task on vea seisundis, ja siis vea hallata.

    .ContinueWith(TaskContinuationOptions.OnlyOnFaulted)


Paar v idet

Paar väidet

  • Kõik taskid käivitakse ThreadPool’i sees

  • Ei garanteeri et:

    • taskid tegelikult töötavad paralleelselt

    • taskid lõpevad samas järjekorras, kui need on loodud

    • Thread’ide arv on võrdne jooksva taskide arvuga

    • paralleelne käivitamine toob kiirust juurde:

      • Context Switches

      • Kui ainult30% koodi saab paralleelset käivitada =>

        eisaa 2x jõudsust kätte


Paar vihjed

Paar vihjed

  • ThreadPool on konfigureeritav.

    • Nii min kui ka maxthread’i arvu jaoks

    • Ettevaatust! Võib jõudlust maha lüüa

  • Unit - testimine?


Kokkuv tteks

Kokkuvõtteks

  • ThreadPool toob juurde paindlikuma resurside kasutust

  • API annab rohkem kontrolli operatsioonide üle – kombineerimine, jne

  • Üldised abstraktsioonid ja käitumine

  • TPL = +1 kasulikriist


Kasulikud viited

Kasulikud viited

  • TPL @ MSDN

    http://msdn.microsoft.com/en-us/library/dd460717.aspx

  • Samples for Parallel Programming with the .NET Framework @ Code.MSDN

    http://code.msdn.microsoft.com/ParExtSamples

  • Pro .NET 4 Parallel Programming in C# (Expert's Voice in .NET) by Adam Freeman

    http://www.amazon.com/NET-Parallel-Programming-Experts-Voice/dp/1430229675


Si s sejuhatus tpl raamistiku

Küsimused?


Si s sejuhatus tpl raamistiku

Aitäh!

[email protected]

www.devclub.eu

www.devclub.ee


Si s sejuhatus tpl raamistiku

www.eneta.ee/foorum


  • Login