void put(Buffer* b, int m) { enterMonitor(b->monitor); while(b->full) { wait(); } b->message = m; b->full = 1; notify(); exitMonitor(); return; }
int get(Buffer* b) { int m; enterMonitor(b->monitor); while (!b->full) { wait(); } m = b->message; b->full = 0; notifyAll(); exitMonitor(); return m; }
int get(Buffer* b) { printf("get\n"); int m; enterMonitor(b->monitor); while (!b->full) { wait(); } printf("got\n"); m = b->message; b->full = 0; notifyAll(); exitMonitor(); return m; }
int timedGet(Buffer *b, int timeout) { int m, ret; enterMonitor(b->monitor); if (!b->full) { ret = timedWait(timeout); } if (ret) { m = b->message; b->full = 0; notifyAll(); } else { m = TIMEOUT; } exitMonitor(); return m; }