- - - - CENAPAD-MGCO

contents index A seguir: Árvores-B: Solução (cont) Acima: Respostas Anterior: Transações


Árvore B

  (Exercício 2.5.7)

class BTreeConcurrencyController {    
   int nww = 0, nwr = 0, nr = 0;  
   TicketQueue q;
   Bed bed;
   Key mutex;  
   void readerRequestRead() {    
      lock(mutex);  
         Ticket myTicket = q.getTicket();
         while ((nww > 0) || (!q.isTheBest(myTicket))) {   
            wait(bed,mutex);
         }   
         nr++;  
         waiting.ok(myTicket);  
         wakeup(bed,mutex);
      unlock(mutex);  
   }   
   void writerRequestRead() {    
      lock(mutex);  
         Ticket myTicket = q.getTicket();
         while ((nww + nwr > 0) || (!q.isTheBest(myTicket))) {   
            wait(bed, mutex);  
         }   
         nwr++;  
         waiting.ok(myTicket); 
         wakeup(bed,mutex);
      unlock(mutex);  
   }



 

Osvaldo Carvalho - Postscript - Comentários?