Ciao a tutti, sono uno studente dell'università di Pisa, Ingegneria Informatica per la precisione, e mi ritrovo a dover mettere in piedi un progetto per l'esame di sistemi operativi.
Il professore ha dato le seguenti specifiche: http://sisop.sssup.it/progettino_ancilotti_2008-09.pdf
Innanzitutto devo creare una porta (tra le due opzioni ho scelto questa) che è definita come un collegamento diretto tra più mittenti ed un solo ricevente. Questa è la prima parte del progetto che ho realizzato come un monitor (usando la synchronized):
Codice PHP:
public class SyncPort {
  private 
Message buffer;
  private 
boolean full_buffer false;
  public 
SyncPort() {
    
//constructor
  
}
  public 
synchronized Message get_message() throws InterruptedException {
    try {
      while (
full_buffer==false) {
      
System.out.println(Thread.currentThread().getName() + ": attendo che il buffer sia pieno");
      
wait();
    }
    
System.out.println(Thread.currentThread().getName() + ": il buffer è pieno e prelevo il messaggio");
    
full_buffer false;
    } finally {
      
notifyAll();
    }
    return 
buffer;
  }
  public 
synchronized void put_message(Message mthrows InterruptedException {
    try {
      while (
full_buffer==true) {
      
System.out.println(Thread.currentThread().getName() + ": attendo che il buffer sia vuoto");
      
wait();
    }
    
buffer m;
    
System.out.println(Thread.currentThread().getName() + ": il buffer è vuoto e inserisco il messaggio");
    
full_buffer true;
    } finally {
      
notifyAll();
    }
  }

Credo che fino a questo punto dovrei aver fatto la porta in maniera corretta.
Il professore vuole che sia possibile indirizzare una send verso <ID_THREAD>.<PORTA> ma non ho idea di come fare!!
Qualcuno può aiutarmi, magari con un esempio?
Grazie in anticipo!