algoritmo de lamport ( concurrente )

bLaCkH0Le

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.

Soltrac

Buah yo hace años q no toco eso...pero supongo q sabes q tienes q utilizar threads y demás mierdas no?

bLaCkH0Le

sip. mas o menos lo tengo implementado. Me queda tener claro que es lo que hace lamport con los dos vecttores que utiliza.

JuAn4k4

¿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]

bLaCkH0Le

con lo de la wikipedia no me acabo de enterar : SSS

Usuarios habituales

  • bLaCkH0Le
  • JuAn4k4
  • Soltrac