Go backward to Problem Go up to Top Go forward to Confidence in the Solution |
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++;
}
}
}