KDP/Randevu

Izvor: SI Wiki
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

Debug: KDP/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);
    }
}