Difference between revisions of "ProvaTeoria 2012.01.12"
		
		
		
		
		
		Jump to navigation
		Jump to search
		
			
		
		
	
| Stefano 92 (talk | contribs)   (Created page with "=[http://www.cs.unibo.it/~renzo/so/compiti/2012-01-12.tot.pdf TESTO COMPITO]=  ==Esercizio 1== <syntaxhighlight lang="C"> monitor seq { 	condition* c=List() 	int* procstack=St...") | 
| (No difference) | 
Revision as of 10:49, 30 April 2014
TESTO COMPITO
Esercizio 1
monitor seq
{
	condition* c=List()
	int* procstack=Stack();
	
	procedure entry enter()
	{
		procstack.push(this->p_id);
	}
	
	procedure entry exit()
	{
		if (procstack.Top()!=this->p_id){
			List.insert(this->p_id);
			(List.search(this->p_id)).wait();
			}
		List.remove(this->p_id);
		procstack.Pop();
		List.search(procstack.Top()).signal();
	}
}
NOTA: Con questa soluzione se l'ultimo processo chiama la exit e ci sono altri processi in coda, gli altri processi usciranno prima che l'ultimo esca dallo urgent stack per uscire a sua volta, quindi non credo che rispetti la traccia. Però non ho trovato un'altra soluzione XD -stefano92