@Override public Message get(_Consommateur arg0) throws Exception, InterruptedException { Message m; consoLibre.p(); // on verifie la presence de ressources mutex.p(); // acce unique au buffer m = msg[debut]; obs.retraitMessage(arg0, m); obstest.retraitMessage(arg0, m); debut = (debut + 1) % taille(); cpt--; if (affichage == 1) { System.out.println("\tRecuperation IDCons " + arg0.identification() + " : " + m); } mutex.v(); // deblocage de l'acce au buffer prodLibre.v(); // pour avertir les producteurs return m; }
@Override public Message get(_Consommateur aConsommateur) throws InterruptedException, ControlException { this.cons.attendre(); Message wMessage; synchronized (this) { wMessage = buffer[out]; out = (out + 1) % taille(); nbPlein--; /* Impression d'un message dans le log */ SimpleLogger.out.logInfo( this, "<Consommation>", "%s consommé par Consommateur %d ", wMessage, aConsommateur.identification()); } this.prod.reveiller(); return wMessage; }