10. el őadás párhuzamos programozási kérdések. az ada taszkok (1)
DESCRIPTION
10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1). Párhuzamos programozás. Program: több tevékenység egyidőben Önálló folyamatok Együttműködnek Többféle lehetőség Elosztott rendszer (distributed system) Többszálú program (multithreaded program) … Célok - PowerPoint PPT PresentationTRANSCRIPT
![Page 1: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/1.jpg)
10. előadásPárhuzamos programozási kérdések.Az Ada taszkok (1).
![Page 2: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/2.jpg)
2
Párhuzamos programozás
Program: több tevékenység egyidőben Önálló folyamatok Együttműködnek Többféle lehetőség
– Elosztott rendszer (distributed system)– Többszálú program (multithreaded program)– …
Célok– Hatékonyság növelése– A feladat egyszerűbb megoldása
![Page 3: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/3.jpg)
3
Elosztott rendszer
Több számítógép hálózatba szervezve A folyamatok elosztva a hálózaton Kliens-szerver programok Elosztott objektumrendszer (CORBA, DCOM) PVM, MPI, messaging rendszerek Ada 95: Partíciók Kommunikáció:
– Távoli eljáráshívás (Remote Procedure Call)– Üzenetküldés
![Page 4: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/4.jpg)
4
Megosztott memóriájú rendszer
Shared memory system Szemben az elosztott (memóriájú)
rendszerrel Egy gépen belül több processzor Egyszerűbb kommunikáció
![Page 5: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/5.jpg)
5
Többszálú programok
Egy processzen belül több végrehajtási szál Pehelysúlyú folyamatok (light-weight processzek)
a heavy-weight processzben Operációs rendszerek is támogathatják Programozási nyelvi eszközök (Ada, Java) Egy tárterületen belül futnak
– A processzhez rendelt memóriában– Megosztott memóriás modell– Saját végrehajtási verem
![Page 6: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/6.jpg)
6
Mire jó a több szál
Ha több tevékenységet kell végezni egyszerre Egymástól függetlenül fogalmazhatjuk meg ezeket Összehangolásra szükség van:
– Szinkronizáció– Kommunikáció
Példák– Több kliens kiszolgálása a szerverben– Webböngésző: a felhasználói felület kezelése + letöltés– Szimulációk
![Page 7: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/7.jpg)
7
Problémák
Elméleti nehézség (programhelyesség) Gyakorlati nehézség (nemdeterminisztikusság)
tesztelés, nyomkövetés
Ütemezés Interferencia Szinkronizáció Kommunikáció Holtpont és kiéheztetés
![Page 8: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/8.jpg)
8
Ada taszkok
A többszálú programozáshoz nyelvi eszköz Gazdag lehetőségek
task A;task body A isbegin
for I in 1..10000 loopPut_Line("Szia!");
end loop;end A;
![Page 9: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/9.jpg)
9
Taszk programegység
Specifikáció és törzs– Különválik (mint a csomag és a sablon)
task A; task body A is … end A;
– Specifikáció: hogyan lehet vele kommunikálni– Törzs: hogyan működik
Nem lehet könyvtári egység(be kell ágyazni más programegységbe)
![Page 10: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/10.jpg)
10
Kétszálú program
with Ada.Text_IO; use Ada.Text_IO;procedure Kétszálú is
task Egyik;task body Egyik isbegin
loopPut_Line("Szia!");
end loop;end Egyik;
beginloop
Put_Line("Viszlát!");end loop;
end Kétszálú;
![Page 11: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/11.jpg)
11
Lehetséges kimenetek
Szia!Viszlát!Szia!Viszlát!Szia!Viszlát!Szia!Viszlát!Szia!Viszlát!
Szia!Szia!Szia!Szia!Viszlát!Viszlát!Viszlát!Viszlát!Szia!Szia!
Szia!Szia!Szia!Viszlát!Szia!Szia!Viszlát!Viszlát!Viszlát!Viszlát!
Szia!Szia!Szia!Szia!Szia!Szia!Szia!Szia!Szia!Szia!
SziViszla!át!Szia!Szia!Viszlát!ViszSzia!láSzit!a!
Szia!Szia!
![Page 12: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/12.jpg)
12
Jellemző kimenet
Sokszor az egyik (például Viszlát!) Utána sokszor a másik Nem ugyanannyiszor Változik futás közben, hogy melyikből
mennyi Futásról futásra is változik
![Page 13: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/13.jpg)
13
Ütemezés
A futtató rendszer ütemezi a szálakat– Vagy az oprendszer, vagy az Ada rendszer– Co-rutinok: programozó ütemez (Simula 67)
Az Ada nyelv nem tesz megkötést arra, hogy egy adott Ada implementációban az ütemezés milyen algoritmussal történik
Jó program: bármely ütemezésre jó
![Page 14: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/14.jpg)
14
Időosztásos ütemezés
Nem valódi párhuzamosság Egy processzor: egyszerre csak egyet Időszeletek (time slicing) Gyorsan váltogatunk, párhuzamosság
látszata Egyenlő időszeletek: pártatlanság Kooperatív viselkedés
![Page 15: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/15.jpg)
15
Kompetitív viselkedés
„Fusson, amíg van mit csinálnia” Amíg számol, addig övé a vezérlés Vezérlés elvétele: csak speciális pontokon
(blokkolódás, szinkronizáció) Hatékonyabb, mint az időszeletes ütemezés
– Kevesebb kontextusváltás (context switch) Nem pártatlan:
egy taszk kisajátíthatja az erőforrásokat
![Page 16: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/16.jpg)
16
Prioritás
A magasabb prioritású szálak előnyben Ada: Real-Time Systems Annex Set_Priority, Get_Priority alprogramok
![Page 17: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/17.jpg)
17
Pártatlanság, kooperáció
Egy taszk lemondhat a vezérlésről delay utasítás
loop
Put_Line("Szia!");
delay 0.0;
end loop; Jellemző kimenet: felváltva írnak ki
![Page 18: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/18.jpg)
18
Várakozás
Egy időre felfüggeszthető a taszk A delay utasítással: delay 2.4; A delay után Duration típusú érték van
– Predefinit valós fixpontos típus– A másodperc megfelelője
Legalább ennyi ideig nem fut a taszk Szimulációkban gyakran használjuk Használjuk szinkronizációs utasításokban
![Page 19: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/19.jpg)
19
Taszk elindulása és megállása
procedure P is
task T;
task body T is … begin … end T;
begin
…
end P;
itt indul a T
P itt bevárja T-t
![Page 20: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/20.jpg)
20
Szülő egység
Az a taszk / alprogram / könyvtári csomag / blokk, amelyben deklaráltuk– (!)
Elindulás: a szülő deklarációs részének kiértékelése után, a szülő első utasítása előtt
A szülő nem ér véget, amíg a gyerek véget nem ér Függőségi kapcsolatok
![Page 21: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/21.jpg)
21
Taszk befejeződése
Bonyolult szabályok Fogalmak: komplett, abortált, terminált Például:
– elfogytak az utasításai (akár kivétel miatt)– és a tőle függő taszkok már termináltak
T’Callable T’Terminated
![Page 22: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/22.jpg)
22
Ha több egyforma szál kell
with Ada.Text_IO; use Ada.Text_IO;procedure Háromszálú is
task Egyik;task body Egyik isbegin
loop Put_Line("Szia!"); end loop;end Egyik;task Másik;task body Másik is … begin … end Másik;
beginloop Put_Line("Viszlát!"); end loop;
end Háromszálú;
![Page 23: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/23.jpg)
23
Taszk típussal
with Ada.Text_IO; use Ada.Text_IO;procedure Háromszálú is
task type Üdvözlő;task body Üdvözlő isbegin
loop Put_Line("Szia!"); end loop;end Üdvözlő;Egyik, Másik: Üdvözlő;
beginloop Put_Line("Viszlát!"); end loop;
end Háromszálú;
![Page 24: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/24.jpg)
24
Taszk típus
Taszkok létrehozásához– Ugyanazt csinálják, ugyanolyan utasítássorozatot
hajtanak végre– Saját példánnyal rendelkeznek a lokális változókból
Korlátozott (limited) típusok Cím szerint átadandó, ha alprogram-paraméter Programegységek
– Mint a taszk programegységek– Specifikáció és törzs különválik– Nem lehet könyvtári egység
(be kell ágyazni más programegységbe)
![Page 25: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/25.jpg)
25
Taszk típus diszkriminánsai
Mint a rekordok esetében Lehet a diszkrimináns mutató típusú is Taszkok létrehozásakor aktuális
task type T ( Id: Integer );
task body T is … begin … Put(Id); … end T;
X: T(13);
![Page 26: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/26.jpg)
26
Mutató típusú diszkrimináns
with Ada.Text_IO; use Ada.Text_IO;procedure Háromszálú is
type PString is access String;task type Üdvözlő ( Szöveg: PString );task body Üdvözlő isbegin
loop Put_Line(Szöveg.all); end loop;end Üdvözlő;Egyik: Üdvözlő(new String’("Szia!"));Másik: Üdvözlő(new String’("Hello!"));
beginloop Put_Line("Viszlát!"); end loop;
end Háromszálú;
![Page 27: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/27.jpg)
27
Taszkok létrehozása allokátorral
Taszk típusra mutató típus:
task type Üdvözlő ( Szöveg: PString );type Üdvözlő_Access is access Üdvözlő;P: Üdvözlő_Access;
A mutató típus gyűjtőtípusa egy taszk típus Az utasítások között:
P := new Üdvözlő( new String’("Szia!") );
![Page 28: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/28.jpg)
28
Taszk elindulása és megállása
procedure Fő istask type Üdvözlő ( Szöveg: PString );type Üdvözlő_Access is access Üdvözlő;P: Üdvözlő_Access;task body Üdvözlő is … begin … end;
begin…P := new Üdvözlő( new String’("Szia!") ); …
end Fő;
itt indu
l
Fő itt bevárja
![Page 29: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/29.jpg)
29
Szülő egység
Az a taszk / alprogram / könyvtári csomag / blokk,– amelyben deklaráltuk– amely a mutató típust deklarálta
Elindulás:– a szülő deklarációs részének kiértékelése után, a szülő
első utasítása előtt– az allokátor kiértékelésekor
A szülő nem ér véget, amíg a gyerek véget nem ér Függőségi kapcsolatok, befejeződés
![Page 30: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/30.jpg)
30
Komplett taszk
Ha véget ért a törzs utasításainak végrehajtása– normálisan– kivételes eseménnyel
és nincs kivételkezelő rész vagy van, de nincs megfelelő ág benne vagy van, és a kivételkezelő ág lefutott
Ha a taszk elindítása során kivétel lépett fel
![Page 31: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/31.jpg)
31
Abnormális állapotú taszk
Az abort utasítással „kilőhető” egy taszk– akár magát is kilőheti: öngyilkos
Nem túl szép módja egy taszk leállításának
task type T( Id: Integer );task body T is ... end T;X: T(1); Y: T(2);
begin…abort X, Y;
![Page 32: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/32.jpg)
32
Egy taszk terminál, ha
komplett, és az összes tőle függő taszk terminált már
abnormális állapotba jutott és törlődött a várakozási sorokból
terminate utasításhoz ért, és a taszk olyan programegységtől függ, amely már komplett, és a leszármazottai termináltak már, komplettek, vagy szintén terminate utasításnál várakoznak
![Page 33: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/33.jpg)
33
Szülő terminálása
Egy szülő addig nem terminálhat, amíg az általa létrehozott taszkok nem terminálnak
Miután befejezte saját utasításainak végrehajtását (azaz kompletté vált), megvárja, hogy a tőle függő taszkok is termináljanak (az end-nél várakozik)
![Page 34: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/34.jpg)
34
Információcsere taszkok között
Nonlokális (globális) változókon keresztül– Nem szeretjük...– Biztonságosabbá tehető különféle pragmák segítségével
(Atomic és Volatile)
Randevúval– Ezt fogjuk sokat gyakorolni– Aszimmetrikus, szinkron, pont-pont, kétirányú
kommunikációt tesz lehetővé
Védett egységek használatával
![Page 35: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/35.jpg)
35
Nonlokális változón keresztül
procedure P is
N: Natural := 100;
task type T;
task body T is
begin
… if N > 0 then N := N-1; … end if; …
end T;
A, B: T;
begin … end P; legfeljebb N-szer szabadna
![Page 36: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/36.jpg)
36
Interferencia
Ha a taszkok önmagukban jók De együttes viselkedésük rossz
Szinkronizáció segíthet
![Page 37: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/37.jpg)
37
Randevú
Szinkronizációhoz és kommunikációhoz Egyik taszk:
belépési pont (entry) és accept utasítás Másik taszk: meghívjuk a belépési pontot
Aszimmetrikus Szinkron Pont-pont Kétirányú
![Page 38: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/38.jpg)
38
task Lány isentry Randi;
end Lány;
task body Lány isbegin
…accept
Randi;…
end Lány;
task Fiú;
task body Fiú is
begin
…
Lány.Randi;
…
end Fiú;
Fiú és lány taszkok
![Page 39: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/39.jpg)
39
task Lány isentry Randi;
end Lány;
task body Lány isbegin
…accept
Randi;…
end Lány;
task Fiú is end Fiú;
task body Fiú is
begin
…
Lány.Randi;
…
end Fiú;
Fiú és lány taszkok
![Page 40: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/40.jpg)
40
Pont-pont kapcsolat
Egy randevúban mindig két taszk vesz részt Egy fiú és egy lány Szerepek
– Egy taszk lehet egyszer fiú, másszor lány
Nincs "broad-cast" jellegű randevú
![Page 41: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/41.jpg)
41
Aszimmetrikus
Megkülönböztetjük a hívót és a hívottat (fiú és lány)
Egész másként működik a két fél A szintaxisban is kimutatható a különbség A hívó ismeri a hívottat, de fordítva nem
![Page 42: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/42.jpg)
42
Az accept törzse
A randevú az accept utasítás végrehajtásából áll
Ez alatt a két taszk „együtt van” A fogadó taszk hajtja végre az accept-et
Az accept-nek törzse is lehet, egy utasítássorozat
![Page 43: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/43.jpg)
43
task Lány isentry Randi;
end Lány;
task body Lány isbegin
…accept Randi
do…
end;…
end Lány;
task Fiú;
task body Fiú is
begin
…
Lány.Randi;
…
end Fiú;
Huzamosabb randevú
![Page 44: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/44.jpg)
44
Szinkronitás
A randevú akkor jön létre, amikor mindketten akarják
Bevárják egymást a folyamatok az információcseréhez
Az aszinkron kommunikációt le kell programozni, ha szükség van rá
![Page 45: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/45.jpg)
45
A fiú bevárja a lányt (1)
Fiú Lány
Lány.Randi; accept Randi do … end Randi;
![Page 46: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/46.jpg)
46
A fiú bevárja a lányt (2)
Fiú Lány
Lány.Randi; accept Randi do … end Randi;
![Page 47: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/47.jpg)
47
A fiú bevárja a lányt (3)
Fiú Lány
Lány.Randi; accept Randi do … end Randi;
![Page 48: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/48.jpg)
48
A fiú bevárja a lányt (4)
Fiú Lány
Lány.Randi; accept Randi do … end Randi;
![Page 49: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/49.jpg)
49
A fiú bevárja a lányt (5)
Fiú Lány
Lány.Randi; accept Randi do … end Randi;
![Page 50: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/50.jpg)
50
A fiú bevárja a lányt (6)
Fiú Lány
Lány.Randi; accept Randi do … end Randi;
![Page 51: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/51.jpg)
51
A lány bevárja a fiút (1)
Fiú Lány
Lány.Randi; accept Randi do … end Randi;
![Page 52: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/52.jpg)
52
A lány bevárja a fiút (2)
Fiú Lány
Lány.Randi; accept Randi do … end Randi;
![Page 53: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/53.jpg)
53
A lány bevárja a fiút (3)
Fiú Lány
Lány.Randi; accept Randi do … end Randi;
![Page 54: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/54.jpg)
54
A lány bevárja a fiút (4)
Fiú Lány
Lány.Randi; accept Randi do … end Randi;
![Page 55: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/55.jpg)
55
A lány bevárja a fiút (5)
Fiú Lány
Lány.Randi; accept Randi do … end Randi;
![Page 56: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/56.jpg)
56
A lány bevárja a fiút (6)
Fiú Lány
Lány.Randi; accept Randi do … end Randi;
![Page 57: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/57.jpg)
57
Kommunikáció
A randevúban információt cserélhetnek a taszkok
Paramétereken keresztül– Entry: formális paraméterek– Hívás: aktuális paraméterek
A kommunikáció kétirányú lehet,a paraméterek módja szerint (in, out, in out)
Az alprogramok hívására hasonlít a mechanizmus (fontos különbségek!)
![Page 58: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/58.jpg)
58
Várakozási sor
Egy entry-re több fiú is várhat egyszerre De a lány egyszerre csak eggyel randevúzik Egy entry nem olyan, mint egy alprogram,
mert nem „re-entráns” A hívó fiúk bekerülnek egy várakozási sorba Minden entry-nek saját várakozási sora van Ha a hívott lány egy accept utasításhoz ér, a
legrégebben várakozóval randevúzik (vagy, ha nincs várakozó, akkor maga kezd várni)
![Page 59: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/59.jpg)
59
A belépési pontok
Minden belépési ponthoz tartoznia kell legalább egy accept utasításnak a törzsben
Akár több accept utasítás is lehet a törzs különböző pontjain elhelyezve
(Egy hívóban több entry-hívás is lehet) Az entry várakozási sorának aktuális
hossza: ‘Count attribútum
Randi’Count
![Page 60: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/60.jpg)
60
task Tároló is
entry Betesz( C: in Character );
entry Kivesz( C: out Character );
end Tároló;
Több belépési pont is lehet
![Page 61: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/61.jpg)
61
task body Tároló isCh: Character;
beginloop
accept Betesz( C: in Character ) doCh := C;
end Betesz;accept Kivesz( C: out Character ) do
C := Ch;end Kivesz;
end loop;end Tároló;
Egyelemű buffer
![Page 62: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/62.jpg)
62
task body T isCh: Character;
begin...Get(Ch);Tároló.Betesz(Ch);...Tároló.Kivesz(Ch);Put(Ch);...
end T;
Így használhatjuk
![Page 63: 10. el őadás Párhuzamos programozási kérdések. Az Ada taszkok (1)](https://reader031.vdocuments.mx/reader031/viewer/2022013004/56814a38550346895db75377/html5/thumbnails/63.jpg)
63
Aszinkron kommunikáció
task body A is
Ch: Character;
begin
...
Get(Ch);
Tároló.Betesz(Ch);
...
end A;
task body B is
Ch: Character;
begin
...
Tároló.Kivesz(Ch);
Put(Ch);
...
end B;