previous up next
Go backward to Problem
Go up to Top
Go forward to Confidence in the Solution
RISC-Linz logo

Result

Software engineer returns a program.

void Server(Channel[C] server, Channel[C] client)
{
  Array<bool> wait = new(C, false);
  int counter = R;
  while (true) {
    int i = select(server);
    if (receive(server[i]) == REQUEST) {
      if (counter > 0) {
        send(client[i], GRANT);
        counter-;
      }
      else
        wait[i] = true;
      }
    }
    ...
    else {
      int j = exists(wait);
      if (j != -1) {
        send(client[j], GRANT);
        wait[j] = false;
      }
      else
        counter++;
    }
  }
}


Author: Wolfgang Schreiner
Last Modification: April 22, 1999

previous up next