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):
Credo che fino a questo punto dovrei aver fatto la porta in maniera corretta.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 m) throws 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();
}
}
}
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!