1 / 29

Si s sejuhatus TPL raamistiku

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.

orsen
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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Sissejuhatus TPL raamistiku JuriMulenko Betgenius www.devclub.euwww.devclub.ee

  2. Kava • Varasemadparalleel-töötluse vahendid • Task Parallel Library • Taskide käivitamine • Kombineerimine • Tühistamine • Vigade haldus • Paar vihjet

  3. Varasemadparalleel-töötluse vahendid

  4. Thread

  5. ThreadPool

  6. Delegate (1/4)

  7. BeginXXX / EndXXX

  8. Muud • Veel 3 viisil delegaatide käivitamine • BeginXXX/EndXXX + Callback • WinformsBackgoundWorker • Oma ThreadPool • ... ?

  9. Probleemid • Sarnasuse olemasolut kohe ei paista • Puudub üldine abstraktsioon • Keerulinekombineerida • Erinevad halduse viisid • Sünkroniseerimine • Tühistamine • Tulemuste analüüs

  10. Task Parallel Library

  11. TPL Data Parallelism • Parallel.For() • Parallel.ForEach() PLINQ • ParallelQuery<T> • ParallelEnumerable extensions • .AsParallel() Task Parallelism

  12. Everything is a Task

  13. Task • Asünkroonse operatsiooni abstraktsioon = delegaatiAction/Funcümbrik ! • Taskiümber on ehitatud rikkas API

  14. Käivitamine • var t = new Task(action); t.Start(); • Task.Factory.StartNew(action); • Parallel.Invoke(action[]);

  15. 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

  16. Kombineerimine • Jada ehitamine ContinueWith() abil • Sisemised taskid (Detached nested tasks) • Võsu taskid (Child tasks)

  17. ContinueWith() Task1 Task1 TaskN Result Result

  18. Sisemised taskid Task 2 Task1 Task 3 Task 4 R E S U L T

  19. Võsu taskid Task 2 Task1 TaskCreationOptions .AttachedToParent Task 3 Task 4 r e s u l t

  20. Tagasisidelehed

  21. Tühistamine • Luua CancellationTokenSourceja lugeda selle .Token omadust • Kasutada CancellationTokentaski käivitamisel • Taski sees lugeda token.IsCancellationRequestedomadust • KutsudaCancellationTokenSource.Cancel()kuisoovimetaski tühistada

  22. 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)

  23. 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

  24. Paar vihjed • ThreadPool on konfigureeritav. • Nii min kui ka maxthread’i arvu jaoks • Ettevaatust! Võib jõudlust maha lüüa • Unit - testimine?

  25. Kokkuvõtteks • ThreadPool toob juurde paindlikuma resurside kasutust • API annab rohkem kontrolli operatsioonide üle – kombineerimine, jne • Üldised abstraktsioonid ja käitumine • TPL = +1 kasulikriist

  26. 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

  27. Küsimused?

  28. Aitäh! yuri.mulenko@gmail.com www.devclub.eu www.devclub.ee

  29. www.eneta.ee/foorum

More Related