si s sejuhatus tpl raamistiku
Download
Skip this Video
Download Presentation
Si s sejuhatus TPL raamistiku

Loading in 2 Seconds...

play fullscreen
1 / 29

Si s sejuhatus TPL raamistiku - PowerPoint PPT Presentation


  • 114 Views
  • Uploaded on

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.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Si s sejuhatus TPL raamistiku' - orsen


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

slide2
Kava
  • Varasemadparalleel-töötluse vahendid
  • Task Parallel Library
    • Taskide käivitamine
    • Kombineerimine
    • Tühistamine
    • Vigade haldus
    • Paar vihjet
slide8
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
slide11
TPL

Data

Parallelism

  • Parallel.For()
  • Parallel.ForEach()

PLINQ

  • ParallelQuery
  • ParallelEnumerable extensions
  • .AsParallel()

Task

Parallelism

slide13
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

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

slide28
Aitäh!

[email protected]

www.devclub.eu

www.devclub.ee

ad