
void print(file F) {
requestPrinter();
/* impressão de F */
releasePrinter();
}
boolean busy = false; key mutex; bed b;
void requestPrinter() {
lock(mutex);
if (busy) { sleep(b,mutex); }
busy = true;
unlock(mutex);
}
void releasePrinter() {
lock(mutex);
busy = false;
wakeup(b, mutex);
unlock(mutex);
}