Untitled

 avatar
unknown
ada
2 years ago
1.5 kB
2
Indexable
sem grupos[1..4] = 0;
semllego_grupo[1..4] = 0;
sem examenes_listos [1..100] = 0;
notas[1..100] = 0;
sem hay_Examen = 0;
contador_grupo[1..4] = 0;
mutex_grupo[1..4] = 1;
barrera_grupo[1..4] = 0;
cola cola
cola cola2

Process  Coordinador(ID: 1..4){
int id_alumno= 0;
Examen examen;
	P(llego_grupo[ID]) //espera la barrera de los 25
	for i= 1 to 25
		push(cola[ID], new examen())
	for i= 1 to 25
		V(hay_examen[ID]) // avisa que pueden recoger el examen los de ese concurso
	
	for i= 1 to 25
P(termino_examen[ID])  // espera q termine
P(mutex_profes[ID])
	id_alumno = pop(cola[ID],  id_alumno , examen) ;
	V(mutex_profes[ID])

	Int nota = corrige_examen(examen)
notas[id_alumno] =  nota //pongo la nota
	V(examenes_listos[id_alumno])
}

Process NoDocentes(ID:1..100){
mi_grupo= elegir_grupo()  //yase cual es mi grupo
	P(mutex_grupo[mi_grupo])
	contador_grupo[mi_grupo]++
	if contador_grupo[mi_grupo] == 25
		for i= 1 to 25  do begin
			V(barrera_grupo[mi_grupo])
		V(llego_grupo[mi_grupo]);

	V(mutex_grupo[mi_grupo]);
	P(barrera_grupo[mi_grupo]);
	//ya pasamos la barrera
	P(hay_examen[mi_grupo]);
	P(mutex_grupo[mi_grupo])
	Examen =  pop(cola[mi_grupo])
	V(mutex_grupo[mi_grupo])
	
resuelvo_examen(examen) 
   
	P(mutex_grupo[mi_grupo])
	push(cola2[mi_grupo], id, examen);
	V(mutex_grupo[mi_grupo]) 
	
V(termino_examen[mi_grupo])  // Aviso q hay un examen para corregir
	P(examenes_listos[ID]);
	
	reviso_mi_nota(notas[ID]);
	//me puedo ir 
}