Algoritmo Dekker
Algoritmo Dekker
Algoritmo Dekker
boolean estado[2];
int turno;
void P0( )
{
while (true)
{
estado[0] = true;
while (estado [1]
if (turno == 1)
{
estado[0] = false;
while (turno == 1)
/* no hacer nada */;
estado[0] = true;
}
/* sección crítica */;
turno = 1;
estado[0] = false;
/* resto */;
}
}
void P1( )
{
while (true)
{
estado[1] = true;
while (estado[0])
if (turno == 0)
{
estado[1] = false;
while (turno == 0)
/* no hacer nada */;
estado[1] = true;
}
/* sección crítica */;
turno = 0;
estado[1] = false;
/* remainder */;
}
}
void main ( )
{
estado[0] = false;
estado[1] = false;
turno = 1;
paralelos (P0, P1);
}