
class Buffer {
char buf[10]; int n=0, p=0, c=0;
int ticket = 0;
TicketQueue prodQ, consQ;
key mutex;
void put(char x) {
lock(mutex);
int myTicket = ticket++;
while ((n geq 10)
(!prodQ.iAmTheBest(myTicket))) {
prodQ.enter(myTicket,mutex);
}
buf[p] = x; p = (p+1) % 10; n++;
consQ.select();
prodQ.ok(myTicket)
unlock(mutex);
}
char get() {
lock(mutex);
int myTicket = ticket++;
while((n
0)
(!consQ.iAmTheBest(myTicket))) {
consQ.enter(myTicket,mutex);
}
char x = buf[c]; c = (c+1) % 10; n-;
prodQ.select();
consQ.ok(myTicket);
unlock(mutex);
}