KDP/Randevu
< КДП
Pređi na navigaciju
Pređi na pretragu
Randevu je koncept iz distribuiranog programiranja iz trećeg bloka nastave i dolazi na distribuiranom delu ispita za SI i RTI.
Avgust 2021, 3. zadatak
Postavka
Rešiti problem filozofa koji ručavaju (Dining Philosophers Problem) koristeći koncept randevua (Rendezvous).
Rešenje
Module Server
op dohvatiViljuske(idF);
op vratiViljuske(idF);
Body
Process Server{
const int N = 5;
boolean jedu[N] = {false};
while(true){
//pretpostavka da kompajler vraca negativne vrednosti za moduo
in dohvatiViljusku(i) and !jedu[(i-1)%N<0 ? ((i-1)%N+N) : (i-1)%N] and !jedu[(i+1)%N] -> jedu[i] = true;
[] vratiViljuske(i) -> jedu[i] = false;
ni
}
}
End Server;
procces Filozof[i=0..4]{
while(true){
misli;
call Server.dohvatiViljuske(i);
jedi;
call Server.vratiViljuske(i);
}
}