next up previous
Next: Árvores-B: Solução (cont) Up: Prioridades dinâmicas: ``Aging'' Previous: Árvore-B

Árvores-B: Solução

 
class BTreeConcurrencyController {

int nww = 0, nwr = 0, nr = 0, ticket = 0;

TicketQueue waiting;

key mutex;

void readerRequestRead() {

lock(mutex);

myTicket = ticket++;

while ((nww > 0) tex2html_wrap_inline3824 (!waiting.iAmTheBest(myTicket))) {

waiting.enter(myTicket,mutex);

}

nr++;

waiting.ok(myTicket);

unlock(mutex);

}

void writerRequestRead() {

lock(mutex);

myTicket = ticket++;

while ((nww + nwr > 0) tex2html_wrap_inline3824 (!waiting.iAmTheBest(myTicket))) {

waiting.enter(myTicket, mutex);

}

nwr++;

waiting.ok(myTicket);

unlock(mutex);

}



Osvaldo Sergio F. de Carvalho
Wed Mar 19 14:56:39 EST 1997