- nástěnka = sdílený prostředek (např. paměť)
- pracuje se s n-ticemi (jsou v závorkách)
- na nástěnce neplatí, že by museli být věci maximálně jednou! = může tam být kolik chceme stejných n-tic
in = přečte a odstraní pokud na nástěnce je n-tice
- pokud není na nástěnce, tak je pozastaven
- šablona = může být libovolná proměnná, je uvedena
?
- pokud je jich více, vezme se 1 náhodně nějaká
rd = přečte a nechá na nástěnce
inp = nic nepřečte, ale vrátí jestli na nástěnce něco je, co splňuje přečtení
- inicializace semaforu = počet
in(Semafor)
- je deadlock
- potřeba udělat N-1 filosofů a budou bojovat, viz. předešlé přednášky
- svítí číslo na lístku a můžeme vzít lístek
- na zkoušku! - že chce implementovat jako proceduru
PROC
- chceme aby kdyby přišlo něco na lib. kanál, tak pošle na výstup, první nesplňuje
- druhý = souboj o kanál
- “procesí kalku”
- předpona je jedna z 4 věcí $\pi = \overline{x}y$
- $\overline{x}y$ - proces chce vysílat něco o tomto kanále $x$ je jméno kom. kanálu a $y$ = jméno co bude posláno (něco jako
chan ! var)
- $x(z)$ - přijímání, $x$ jméno a $z$ jméno co se připíše
- $\tau$ = tichý proces, “nedělá nic” - dělá něco viditelného
- $[x=y]$ - může být provedeno, pouze v případě, že jména jsou stejná
- procesy:
- $M ::= 0 \mid \dots$
- $0$ - skončili jsme
- $\pi . P$ - předpona, “zbytek nějakého procesu”
- $M + M’$ = nedeterministický výběr!, jak si zvolí jedno, tak druhé zahodí
- $P|P’$ = paralelní kompozice
- $\vartheta z P$ = lokální vymezení jména $z$ je soukromé
- $!P$ = nekonečná replikace
- mobilita = můžeme přepisovat komunikační kanály
- $\overline{s}a . \overline{s} b . 0 \stackrel{\overline{s}a}{\rightarrow} \overline{s} b . 0$
- $a(y) . Q \stackrel{az}{\rightarrow} Q [y/z]$
- $P \downarrow x$ - proces $P$ má jméno $x$ jako vstup
- $P \downarrow \overline{x}$ - proces $P$ má jméno $x$ jako výstup
- $P \Downarrow x$ = aktuálně nemusí být pozorovatelné, ale nějakými převody vevnitř může nastat $P \downarrow x$