@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;
 }
Exemple #2
0
  @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;
  }