Implementación de hilos con mutex y condiciones

Clasificado en Física

Escrito el en español con un tamaño de 1,38 KB

1. Declaración de variables

Declaramos el mutex, las dos condiciones (CN, CS, por ejemplo), los pesos o números que nos digan, y comienza la función de hilo.

2. Bloqueo del mutex

Bloqueamos el mutex, obtenemos nuestro peso o número, e incrementamos el del hilo en el que estemos.

3. Ciclo while

Comienza el while, en las condiciones ponemos las que nos dicen y dentro del while un pthread_cond_wait(&condición del hilo, &m), acaba el while.

4. Actualización de pesos

Decrementamos el peso del hilo con el nuestro, y añadimos al peso del puente o lo que sea nuestro peso, y desbloqueamos el mutex (&m). Después de esto, ponemos lo que este haciendo el código, por ejemplo cruzar un puente. Volvemos a bloquear el mutex e incrementamos el peso del puente en este caso con el nuestro.

5. Condiciones para el otro hilo

Empezamos con las condiciones para que pase el otro hilo, suelen ser las inversas de las condiciones del while. Para ello, usamos el pthread_cond_broadcast(&cond, &m). Estas últimas serían para el caso de que en un lado haya más que en el otro y se pueda llenar la capacidad máxima. Usamos un if que tiene dentro otro if, cerramos y después un else if con un if dentro.

6. Desbloqueo del mutex

Por último, desbloqueamos el mutex y realizamos otra función diferente con el otro hilo.

Entradas relacionadas: