Para aquellos que estudieis informatica como yo... estoy rallao aqui con el algortitmo de lamport. no tengo mucha idea de como implementarlo en c. haber si teneis practicas de otro año o cualquier cosa pa poder ver como se implementa. me seria de gran utilidad.
Buah yo hace años q no toco eso...pero supongo q sabes q tienes q utilizar threads y demás mierdas no?
sip. mas o menos lo tengo implementado. Me queda tener claro que es lo que hace lamport con los dos vecttores que utiliza.
¿Pero si esta practicamente hecho no ?
El pseudocodigo de wikipedia, ¿ que es lo que quieres saber de los vectores ?
/* declaración e inicialización de las variables globales */
Número: arreglo [1..N] de enteros = {0};
Eligiendo: arreglo [1..N] de booleanos = {falso};
Thread(i) {
while (cierto) {
Eligiendo = cierto;
Número = 1 + max(Número[1], ..., Número[N]);
Eligiendo = falso;
for (j = 1; j <= N; j++) { /* Para todos los threads */
while (Eligiendo[j] != falso) {
/* Esperar hasta que el thread j reciba su Número */
}
while ((Número[j] != 0) && ((Número[j], j) < (Número[i], i))) {
/* esperar que terminen los threads con menor Número o
con el mismo Número, pero con mayor prioridad */
}
}
/* sección crítica */
Número[i] = 0;
/ resto */
}
}
[/i]