• No results found

Ada. Randki (spotkania) w Adzie. Model. U Ady. Zasady. task Buffer is entry Append (I: in integer); entry Take (I: out integer); end Buffer;

N/A
N/A
Protected

Academic year: 2021

Share "Ada. Randki (spotkania) w Adzie. Model. U Ady. Zasady. task Buffer is entry Append (I: in integer); entry Take (I: out integer); end Buffer;"

Copied!
10
0
0

Loading.... (view fulltext now)

Full text

(1)

Ada

Randki (spotkania) w Adzie

Model

Zasady

=DGDQLHVNáDGDVL ]HVSHF\ILNDFMLRUD]WUH FL

6SHF\ILNDFMDPR H]DZLHUDüW\ONRGHNODUDFMHZHM üDQJ

entries)

task Buffer is

entry Append (I: in integer); entry Take (I: out integer); end Buffer;

=DGDQLHF]\QQHPR HZ\ZRáDüZHM FLH

Buffer.Append(15)

:WUH FL]DGDQLDELHUQHJRV RSLVDQHF]\QQR FLGRNRQ\ZDQHZ

WUDNFLHUDQGNLSRSU]H]GDQHZHM FLH

task body Buffer is

begin { ... }

accept Append (I: in integer) do ^RSLVF]\QQR FL` end Append; { ... } end Buffer;

„U Ady”

ZADANIE AKTYWNE :<:2à8- &( ZADANIE BIERNE 35=<-08- &( ZHM FLH ZHM FLH ZHM FLH
(2)

6\QFKURQL]DFMDPL G]\]DGDQLHPDNW\ZQ\PZ\ZRáXM F\P

ZHM FLHD]DGDQLHPELHUQ\PV\PHWU\F]QHF]HNDQLH

Wzajemne wykluczanie

.ROHMNL]ZL ]DQH]LQVWUXNFMDPL

accept

V UHDOL]RZDQHMDNR

kolejki proste

Semantyka randki

1.

=DGDQLHF]\QQHZ\ZRáXM FHZHM FLHSU]HND]XMHSDUDPHWU\

aktualne in i inout

GR]DGDQLDELHUQHJRL]DZLHV]DVL Z

RF]HNLZDQLXQD]DNR F]HQLHUDQGNL

2.

=DGDQLHELHUQHZ\NRQXMHLQVWUXNFMHZWUH FLRGSRZLHGQLHJR

ZHM FLD

3.

Parametry out i inout

V SU]HND]\ZDQHGR]DGDQLDF]\QQHJR

4.

5DQGNDNR F]\VL NRQW\QXDFMD]DGD

Charakterystyka randki jako operacji pierwotnej

Synchroniczna komunikacja bez buforowania

$V\PHWU\F]QDLGHQW\ILNDFMD]DGD

'ZXNLHUXQNRZ\SU]HSá\ZGDQ\FK

:\NRQ\ZDQLHFL JXLQVWUXNFML

Instrukcja

select

6NáDGQLD

select when w1 ⇒DFFHSWZHM FLHGR,HQGZHM FLH instrukcje-poza-rejonem-krytycznym-1; or when w2 ⇒DFFHSWZHM FLHGR,HQGZHM FLH instrukcje-poza-rejonem-krytycznym-2; ...
(3)

Semantyka

1.

6]XNDQLHRWZDUW\FKJDá ]LW\FK]SUDZG]LZ\PLGR]RUDPL-H OL

ich nie ma oraz brak frazy else

WREá G

2.

-H OLV ]DGDQLDF]\QQHRF]HNXM FHZNROHMNDFKSU]\ZHM FLDFK

RWZDUW\FKJDá ]LWRUR]SRF]\QDVL UDQGND]

pierwszym

zadaniem w niedeterministycznie

Z\EUDQHMJDá ]LRWZDUWHM

3.

-H OLZV]\VWNLHNROHMNLZRWZDUW\FKJDá ]LDFKV SXVWHRUD]QLH

ma else, delay ani terminate, to zadanie bierne zostaje

]DZLHV]RQH*G\W\ONRMDNLH ]DGDQLHF]\QQH]JáRVLFK üZHM FLD

GRRWZDUWHMJDá ]LWRUR]SRF]\QDVL ]QLPUDQGNDXZDJD

GR]RU\QLHV MX ZDUWR FLRZDQHF]\OL]ELyURWZDUW\FKJDá ]LQLH

]PLHQLDVL

4.

Randka przebiega „standardowo”

5.

3R]DNR F]HQLXUDQGNL]DGDQLHELHUQHZ\NRQXMH

instrukcje-poza-rejonem-krytycznym

6.

Mamy else

-H OLQLHPDRWZDUW\FKJDá ]LDOERNROHMNLZ

RWZDUW\FKV SXVWHWRMHVWZ\NRQ\ZDQ\FL JLQVWUXNFML

I-inne 7.

Mamy delay

-H OLNROHMNLZRWZDUW\FKJDá ]LDFKV SXVWHWR

zadanie bierne czeka, ale tylko T jednostek, a potem wykonuje

I-inne

8.

Mamy terminate

:VNUyFLHSRZRGXMH]DNR F]HQLH]ELRUX

]DGD MH OLLQVWUXNFMD

select jest zawieszona i wszystkie

HZHQWXDOQH]DGDQLDDNW\ZQH]DNR F]\á\VL OXEWH F]HNDM Z

select

]JDá ]L

terminate

3URJUDPRZDQLH]X \FLHP

select

=Z\NáDUDQGNDLPSOHPHQWXMHPHFKDQL]P53&

Remote

Procedure Call). Fraza

select uogólnia RPC
(4)

task body T is begin loop select accept czujnik-1 do ... ; or accept czujnik-2 do ... ; or delay 0.1; -- 100 milisekund Alarm; end select; end loop; end T;

Fraza else

MHVWUyZQRZD QD

delay z zerem. Implementuje rodzaj

przepytywania (ang. polling

VSUDZG F]\QLHPDNRPXQLNDWyZ

GRSU]HWZRU]HQLDLMH OLQLHWRZ\NRQXMQRUPDOQHF]\QQR FL

Kilkakrotne accept

GODWHJRVDPHJRZHM FLD

loop

DFFHSW(GRHQG(QLHSDU]\VWHZ\ZRáDQLD DFFHSW(GRHQG(SDU]\VWHZ\ZRáDQLD end loop

;

Instrukcje po accept

PRJ E\üSXVWH7DNDIRUPDVáX \GR

synchronizacji, np. korzystania z zasobu

task body zasób is begin loop accept Chce; accept Zwalnia; end loop; end zasób;

,QVWUXNFMHUDQGNLPRJ ]DZLHUDüZHZQ WU]LQQHUDQGNLDOER

Z\ZRáDQLDZHM üNRQVWUXNFMHWDNLHPDM ]QDF]Q VLá Z\UD]X

(5)

6\QFKURQL]DFMDWU]HFK]DGD

task body T1 is begin ... DFFHSW6\QFKUGR7Z\ZRáXMHWRZHM FLH DFFHSW6\QFKU7Z\ZRáXMHWRZHM FLH end Synchr-2; ... end T1;

=DGDQLH7E G]LH]DZLHV]RQHGRSyW\GRSyNLQLHQDVW SLUDQGND

]7-H OL7]JáRVLVL SLHUZV]HGR7WRE G]LHRF]HNLZDáRZ

NROHMFHZHM FLRZHMD SRMDZLVL 7RFRQDPFKRG]L

Select

w zadaniu czynnym

=DGDQLHF]\QQHPR H]DZLHVLüVL MHG\QLHF]HNDM FQDMHGQR

ZHM FLHQLHPDZ\ZRáD ZLHOXZHM üQDUD]

3U]\NáDGQDZ\NRU]\VWDQLHRJUDQLF]RQHJRF]DVXRF]HNLZDQLDZ

]DGDQLXF]\QQ\P-H OLZRNUH ORQ\PF]DVLHVHNF]XMQLNQLH

zareaguje, to zostanie poinformowany operator

task body T is begin loop select Sensor.sample (...); or delay 1.0; -- w sekundach Notify-operator; end select; end loop; end T;

$QNLHWRZDQLHNLONX]DGD REVáXJXM F\FKVHUZHUyZ]DGDQLH

F]\QQHDQJD XMHVL ZUDQGN W\ONRZWHG\JG\VHUZHUMHVW

(6)

QDW\FKPLDVWGRVW SQ\:W\PXM FLXMH OLMHVWNLONXF]HNDM F\FK

VHUZHUyZWRUDQGNDRGE G]LHVL ]ND G\P

task body T is begin loop select Server-1.E (...); else null; end select; select Server-2.E (...); else null; end select; ... end loop; end T;

6SRWNDQLH]MHGQ\P]RF]HNXM F\FKVHUZHUyZ

task body T is begin loop select Server-1.E (...); else select Server-2.E (...); else ... end select; end select; end loop; end T;

Priorytety

(7)

end Server;

task body Server is begin

loop select

accept Request (High) (...) ...; or

when Request (High)’Count = 0 ⇒ accept Request (Medium) (...) ...; or

when Request (High)’Count = 0 and Request (Medium)’Count = 0 ⇒ accept Request (Low) (...) ...;

end select; end loop; end Server; 6HUYHU5HTXHVW+LJKZ\ZRáDQLH

Semafor

package Mutex-Package; task type Simple-Mutex is entry Wait;

entry Signal;

end Simple-Mutex; task type Mutex is

entry Init (N: in Integer); entry Wait;

entry Signal; end Mutex;

end Mutex-Package;

package body Mutex-Package is task body Simple-Mutex is

begin loop select

(8)

accept Wait; accept Signal; or terminate; end select; end loop; end Simple-Mutex; task body Mutex is Count: Integer; begin

accept Init (N: in Integer) do Count := N; end Init; loop select when Count > 0 ⇒ accept Wait do Count := Count - 1; end Wait; or accept Signal do Count := Count + 1; end Signal; or terminate; end select; end loop; end Mutex; end Mutex-Package;

6NáDGQLD$G\

Predefiniowane typy:

Integer, Float, Character, Boolean, String

Typy wyliczeniowe:

(9)

Tablice

type Arr is array (1..100) of Integer;

Rekordy

type Rec is

record field1: Integer; field2: Boolean; end record;

:VND QLNL

type Rec_Pointer is access Rec;

Instrukcje

if A > B then & $WHQ UHGQLNMHVWZD Q\ elsif A < B then C := B; else C := 0; end if; for I in 1..10 loop A(I) := 0; end loop; while X > 0 loop X := X/2; end loop; loop X := X/2; exit when X <= 0; end loop;

Pakiet

WR]ELyUGHNODUDFMLGDQ\FKLSURFHGXUNWyU\PR QD

RGG]LHOQLHNRPSLORZDüXPLHV]F]DüZELEOLRWHFHLXGRVW SQLDü

LQQ\PSDNLHWRPE G SURJUDPRZLJáyZQHPX

Atrybut

WRIXQNFMDSU]HND]XM FDZDUWR üSUHGHILQLRZDQHM

ZLHONR FL]ZL ]DQHM]RELHNWHP

(10)

if S’Length < 50 then PQLHMQL HOHPZ6 S(S’Last) := S(S’First); -- wstaw na koniec, to co

end if; QDSRF] WNX

for I in S’Range loop -- dla wszystkich elementów w S

S(I) := ‘*’; end loop;

Typ zadaniowy (task type): dla zadeklarowania kilku

LGHQW\F]Q\FK]DGD GHNODUXMHVL W\S]DGDQLRZ\DQDVW SQLH

ZLHOHZFLHOH WHJRW\SX

References

Related documents

After adjusting for confounders, institutionalized living arrangements 1 month after hip fracture, in contrast to the 4-month living arrangements, did not predict

Bourns ® C650 and C850 series products are high-speed bidirectional protection components, constructed using MOSFET semiconductor technology, designed to protect against

4

Xactimate Valuation Reports Add Value Contain a wealth of information May be used as stand-alone documents May be used in conjunction with an estimate Valuation

mummery pm ok EGF, epithelium and Early differentiation and the TGF? superfamily 693Int J Dev Biol 43 693 709 (1999) 0214 6282/99/$15 00 ? UBC Press Printed in Spain www ehu

Interruptions in ongoing trust negotiations can be the result of external, unforeseeable events (e.g., parties’ crashes, faulty transmission channels), or decisions by the

In the MeHg-treated group, AChE activity was sig- nificantly increased by 147.4% of control group, while in the MeHg+DML- and MeHg+GAL-treated groups, AChE activity was

[r]