next up previous
Next: Árvore-B Up: Prioridades dinâmicas: ``Aging'' Previous: Pool de buffers: solução

Aging Queues

 
class AgingQueue {

Queue waiting = new Queue();

void enter(int ticket, key k, int initialPriority) {

if((Request rq = waiting.get(ticket))== null) {

Request rq = new Request(ticket, ticket + initialPriority);

* o segundo parametro eh a prioridade inicial */

waiting.put(rq);

}

rq.bed.sleep(k);

}

void select(key k) {

Request rq = waiting.best();

/* best() retorna a requisicao de melhor prioridade */

rq.bed.wakeup(k);

}

void ok(int ticket) {

waiting.delete(ticket);

waiting.getOlder();

/* aqui melhoram as prioridades de todos

os processos em espera */

}

boolean iAmTheBest(int ticket) {

Request rq = waiting.best();

if (rq == null) return true;

return rq.ticket == ticket;

}

}



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