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.