// Segnature delle attivita' atomiche
// LA SPECIFICA LASCIATA PER ESERCIZIO AGLI STUDENTI
// =================================================
//
// LetturaGiocatori():(isp:Insieme<Partecipante>) -- I/O
// InserimentoGiocatori(p:Partita, isp:Insieme<Partecipante>)
// VerificaGiocabilita'(p:Partita):(ok:Boolean)
// VisualizzaErrore() -- I/O
// VisualizzaSaluto() -- I/O
// Gioca(p:Partita)
// AttendiComandoFine() -- I/O

InizioSpecificaAttivita Principale(p:Partita)
	
	Variabili processo:
		giocatori: Insieme<Partecipante>
        esito: Boolean

	InizioProcesso
		LetturaGiocatori():(giocatori);
		InserimentoGiocatori(p,giocatori);
		VerificaGiocabilita'():(esito);
		
		IF (esito == TRUE)
		THEN {

	    	fork {
				thread t1 : { Gioca(p); }
				thread t2 : { AttendiComando(); }   
			} join t1,t2;
			VisualizzaSaluto();
		}
		ELSE 
			VisualizzaErrore();
	
	FineProcesso

FineSpecifica