КДП/Рандеву
< КДП
Пређи на навигацију
Пређи на претрагу
Рандеву је концепт из дистрибуираног програмирања из трећег блока наставе и долази на дистрибуираном делу испита за СИ и РТИ.
Август 2021, 3. задатак
Поставка
Решити проблем филозофа који ручавају (Dining Philosophers Problem) користећи концепт рандевуа (Rendezvous).
Решење
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);
}
}