UFMG - Pós-graduação em Ciência da Computação - Programação Paralela

A seguir: Árvores-B: Solução (cont) Acima: Aula 7 - Exercícios Anterior: Transações


Escalonamento de uma impressora

Escalonamento de uma impressora

  A applet abaixo deveria ilustrar o comportamento de uma solução em Java para este problema, incluindo ainda a técnica de aging . Não sei por qual razão o Netscape 3.1 não implementa interrupt() como o appletviewer do JDK, e a applet se bloqueia.

Fontes:

subtopicÁ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)  \ensuremath{\parallel} (!waiting.iAmTheBest(myTicket))) {
		 		 		 waiting.enter(myTicket,mutex);
		 		 }
		 		 nr++;
		 		 waiting.ok(myTicket);
		 		 unlock(mutex);
		 }
		 void writerRequestRead() {
		 		 lock(mutex);
		 		 myTicket = ticket++;
		 		 while ((nww + nwr > 0)  \ensuremath{\parallel} (!waiting.iAmTheBest(myTicket))) {
		 		 		 waiting.enter(myTicket, mutex);
		 		 }
		 		 nwr++;
		 		 waiting.ok(myTicket);
		 		 unlock(mutex);
		 }



 

Osvaldo Carvalho