You are on page 1of 2

Maria Ganduxé Beltran

1606755

Problemes de Concurrència

1.

tmux mp1, mp2;


int creuant_p1_p2 = 0, creuant _p2_p1 = 0;
semàfor pont = 20;

Persona_p1_p2() {
lock(mp1);
creuant_p1_p2++;
if (creuant_p1_p2 == 1) lock(mp2);
unlock(mp1);
wait(pont);
Creuar();
Signal(pont);
Lock(mp1);
Creuant_p1_p2--;
If (creuant_p1_p2 == 0) unlock(mp2);
Unlock(mp1);
}
2.

int estat_pista_A = 1, estat_pista_B = 1, estat_pista_C = 1;


semàfor pistes_lliures = 3;
tmux aeroport;

Enlairar_Avio() {
char pista;
wait(pistes_lliures);
lock(aeroport);
if (estat_pista_A == 1) {
estat_pista_A = 0;
pista = A;
} else if (estat_pista_B == 1) {
estat_pista_B = 0;
pista = B;
} else if (estat_pista_C == 1) {
estat_pista_C = 0;
pista = C;
}
Unlock(aeroport);
Enlairar(pista);
Signal(pistes_lliures);
}

You might also like