# Si s sejuhatus TPL raamistiku - PowerPoint PPT Presentation

1 / 29

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.

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

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

## Sissejuhatus TPL raamistiku

JuriMulenko

Betgenius

www.devclub.euwww.devclub.ee

### Kava

• Task Parallel Library

• Kombineerimine

• Tühistamine

• Paar vihjet

### Muud

• Veel 3 viisil delegaatide käivitamine

• BeginXXX/EndXXX + Callback

• WinformsBackgoundWorker

• ... ?

### Probleemid

• Sarnasuse olemasolut kohe ei paista

• Puudub üldine abstraktsioon

• Keerulinekombineerida

• Erinevad halduse viisid

• Sünkroniseerimine

• Tühistamine

• Tulemuste analüüs

### TPL

Data

Parallelism

• Parallel.For()

• Parallel.ForEach()

PLINQ

• ParallelQuery<T>

• ParallelEnumerable extensions

• .AsParallel()

Parallelism

Everything is a Task

• Asünkroonse operatsiooni abstraktsioon

= delegaatiAction/Funcümbrik !

• Taskiümber on ehitatud rikkas API

### Käivitamine

• var t = new Task(action);

t.Start();

• Parallel.Invoke(action[]);

### Seisund ja tulemus

• Töö kestel võib jälgida

### Kombineerimine

• Jada ehitamine ContinueWith() abil

### ContinueWith()

Result

Result

R

E

S

U

L

T

.AttachedToParent

r

e

s

u

l

t

Tagasisidelehed

### Tühistamine

• Luua CancellationTokenSourceja lugeda selle .Token omadust

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

### Paar väidet

• Ei garanteeri et:

• 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

• ThreadPool on konfigureeritav.

• Nii min kui ka maxthread’i arvu jaoks

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

• Unit - testimine?

### 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

• 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

Küsimused?

Aitäh!

yuri.mulenko@gmail.com

www.devclub.eu

www.devclub.ee

www.eneta.ee/foorum