Lista de Exercícios - 9/6/98
#define FALSE 0 #define TRUE 1 sem mutex = 1; int cruzandoOeste = FALSE; int cruzandoLeste = FALSE; CruzaOeste() CruzaLeste() { /* simetrico a CruzaOeste() */ int consegui = FALSE; repeat P(mutex) if (!cruzandoLeste){ cruzandoOeste = TRUE; consegui = TRUE; } V(mutex); until (consegui); Cruza(); P(mutex); cruzandoOeste = FALSE; V(mutex); }
sem oeste = 0; sem leste = 1; CruzaOeste() CruzaLeste() { { P(oeste); P(leste) Cruza(); Cruza(); V(leste); V(oeste); } }
int cruzandoLeste = 0; int queremLeste = 0; int cruzandoOeste = 0; int queremOeste = 0; sem oeste = 0; sem leste = 0; sem mutex = 1; CruzaOeste() { CruzaLeste() { P(mutex); P(mutex); cruzandoOeste++; cruzandoLeste++; if (!cruzandoLeste) if (!cruzandoOeste) V(oeste); V(leste); else else queremOeste++; queremLeste++; V(mutex); V(mutex); P(oeste); P(leste); Cruza(); Cruza(); P(mutex); P(mutex); cruzandoOeste--; cruzandoLeste--; if (!cruzandoOeste && queremLeste) if (!cruzandoLeste && queremOeste) { { queremLeste--; queremOeste--; V(leste); V(oeste); } } V(mutex); V(mutex); } }
This document was generated using the LaTeX2HTML translator Version 96.1-h (September 30, 1996) Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
The command line arguments were:
latex2html -split 0 aulaex1.tex.
The translation was initiated by Noemi Rodriguez on Mon Jun 15 15:19:52 EST 1998