#define FALSE 0
#define TRUE 1
#define N 2 /* número de procesos */
int turno; /* ¿de quién es el turno? */
int interesado[N]; /* al principio todos los valores son 0 (FALSE) */
void entrar_region(int proceso); /* el proceso es 0 o 1 */
{
int otro; /* número del otro proceso */
otro = 1 – proceso; /* el opuesto del proceso */
interesado[proceso] = TRUE; /* muestra que está interesado */
turno = proceso; /* establece la bandera */
while (turno == proceso && interesado[otro] == TRUE) /* instrucción nula */;
}
void salir_region(int proceso) /* proceso: quién está saliendo */
{
interesado[proceso] = FALSE; /* indica que salió de la región crítica */
}