8/17/2019 Paralelno Asinhrono Programiranje
1/23
8/17/2019 Paralelno Asinhrono Programiranje
2/23
Paralelno i asinhrono
programiranje-izazov za svakog programera
Mr. Sc. Bahrudin Hrnjicamail:[email protected]: @bhrnjica
blog:http:!!bhrnjica.net
8/17/2019 Paralelno Asinhrono Programiranje
3/23
8/17/2019 Paralelno Asinhrono Programiranje
4/23
8/17/2019 Paralelno Asinhrono Programiranje
5/23
Sadr"aj
• #i$enitne aplikacije – %hread sa&e' (emo
• Parallel)*-.+et bib. za paralelno programiranje – Moorov zakon – %ask , asinhrona operacija –
ork Stealing/ , princip rada Parallel)* – %P0 , osnovne operacije – P01+2 , 01+2 na steroidima – (emo: %P0 u akciji – (emo: P01+2 u akciji – (emo: (ata3ace
•
as4nc 5 aait , klju6ne rije6i , as4nhrono programiranje – as4nc5aait - jedinstvenost nad svim dijelovima .+7% i in3% – (emo: as4nc programiranje na strani klijenta – (emo: as4nc programiranje na strani servera
• 8aklju6ak
8/17/2019 Paralelno Asinhrono Programiranje
6/23
#i$enitne aplikacije - #9
• #i$enitne aplikacije- aplikacija manipuli$eu isto vrijeme sa vi$e od jedne niti.
• Slo"enost implementacije.• +ona mora za debugiranje.
8/17/2019 Paralelno Asinhrono Programiranje
7/23
(7M;
%hread-sa&e demo.
8/17/2019 Paralelno Asinhrono Programiranje
8/23
#i$enitne aplikacije - #9
• >ta je %hread Sa&e?%SA
• (a li je 6itanje %SA•
ta je 3ace
ondition/ ?3A
• ;snovni pojam #+app.
• 8avisi= •
Samo lokalnevarijable.• +e$to $to vas
spre6ava razvijate #9.
8/17/2019 Paralelno Asinhrono Programiranje
9/23
397 ;+(1%1;+
Nit 1 Nit 2 vrij
6itanje C- Dink. proces D
memorisanje
-E F
6itanje C- F
ink. proces F
memorisanje
-E G
Nit 1 Nit 2 vrij
6itanje C-
D
6itanje C-
D
ink. proces F
ink. proces F
memorisanje
-E
F
memorisan
je
-
E
F
iiIFJ iiIFJ
8/17/2019 Paralelno Asinhrono Programiranje
10/23
(7M;
3ace ondition demo.=
8/17/2019 Paralelno Asinhrono Programiranje
11/23
Programming Models
#isual Studio GDFD i .+7% K.D %ools' Programming Models' 3untimes
Parallel(ebugger
%ool
indo
ParallelProLler9nal4sis
%ools
.+7% 3untimes %hread Pools
Managed 0ibrar4 %ools
.+7% Parallel 7*tensions
%ask Scheduler
3esource Manager ( a t a
S t r u c
t u r e s %P0 P01+2
8/17/2019 Paralelno Asinhrono Programiranje
12/23
%ask Scheduler/ork Stealing u akciji
orker %hread
F
orker %hread
pProgram
%hread %ask F
%ask G %ask N
%ask O %ask K
8/17/2019 Paralelno Asinhrono Programiranje
13/23
%P0 , %ask asihrona operacija• (eLnicija objekta %ask
• Metode klase %ask
• Stanja objekta %ask
Task task= new Task(()=>Compute());
task.Start();//Pokretanje operacije Compute() asinhrono
task.Wait();//Zaustavjanje i!vr"avanja ko#a #ok se ne !avr"i operacija Compute()
task.Wait$(params Task%& tasks);//Zaustavjanje i!vr"avanja ko#a #ok se ne !avr"e svi
!a#aci prosje'eni kao arument meto#e
task.Wait$n(params Task%& tasks);//Zaustavjanje i!vr"avanja ko#a #ok se ne !avr"i *arje#an o# !a#ataka prosje'eni kao arument meto#e
pu*ic enum TaskStatus
+ Create# = ,-
Waitinor$ctivation = -
WaitinTo0un = 1-
0unnin = 2-
WaitinorChi#renToCompete = 3-
0anToCompetion = 4-
Cancee# = 5-
aute# = 6-
7
8/17/2019 Paralelno Asinhrono Programiranje
14/23
%P0 , task parallel librar4 &or petlja
• zmimo klasi6nu &or petlju u Q
• Petlja u paralelnoj verziji
• 1teracija petlje izvr$ava se paralelno ipodjednako optereava sve jezgre
vi$ejezgrenog procesora
8or(int i=,;i9count; i::)
+
resut%i&=Compute(c);
7
Parae.or(,-count-(i)=>
+
resut%i&= Compute(c);7);
8/17/2019 Paralelno Asinhrono Programiranje
15/23
%P0 , Parallel0oopState•
8/17/2019 Paralelno Asinhrono Programiranje
16/23
P01+2- Paralelizirani 01+2
• P01+2 , obezbjeRuje da se klasi6ni 01+2
upiti izvr$avanju paralelno na svim jezgrama procesora podjednako.
var = 8rom p in peope
where p.
8/17/2019 Paralelno Asinhrono Programiranje
17/23
(7M;
Parallel)* u akciji.=
8/17/2019 Paralelno Asinhrono Programiranje
18/23
9sinhrono programirnaje
• as4nc' aait , klju6ne rije6i• nivo programskog jezika ?cQ' vb.• %o je vrsta procesuiranja koja izbjegava
blokiranje 1.• #rste procesuiranja
– +etork 1!; – )ile 1!; – isto Procesuiranje
8/17/2019 Paralelno Asinhrono Programiranje
19/23
(7M;
as4nc , programirnaje nastrani klijenta=
8/17/2019 Paralelno Asinhrono Programiranje
20/23
(7M;
as4nc - programiranje nastrani servera
8/17/2019 Paralelno Asinhrono Programiranje
21/23
8aklju6ak
• Paralel)T , iskoristiti optimalno resurse kojeimamo.
• %ask , osnovni pojam paralelnog i as4nc
programirnaja.• as4nc5aait , prestavlja sekvencijalni kod
koji ne blokira 1.• as4nc5aait , uniLkacija nad 6itavim .+7% i
in3%.•
8/17/2019 Paralelno Asinhrono Programiranje
22/23
mail:[email protected]: @bhrnjicablog: http:!!bhrnjica.net
mailto:[email protected]://bhrnjica.net/http://bhrnjica.net/http://bhrnjica.net/http://bhrnjica.net/mailto:[email protected]
8/17/2019 Paralelno Asinhrono Programiranje
23/23
Top Related