Sobre hilos POSIX

B

Estoy haciendo una práctica y tengo unas dudillas sobre como hacer un ejercicio. Os cuento:

Tengo que hacer un programa que utilizando hilos POSIX (con lenguaje C) cree tantos hilos como se le pasa como argumeento. A partir de ahí cada hilo tiene que imprimir los numeros del 1 al 10 pero con la restricción de que todos los números iguales han de aparecer de forma consecutiva en la pantalla. Se ha de hacer utilizando variables de condición y mutex.

¿Alguien sabe como puedo hacer esto? La cuestión es que si yo pongo por consola ./miprograma 5 el resultado debe ser:

111112222233333...1010101010

Gracias de antemano. Joder con los mutex que dificiles son... xD!

javithelong

Acabo de contestarte un parrafazo y no se ha grabado ^^ cago en la putaaaaa, ara lo escribo otra vez

Si mal no recuerdo, los hilos comparten el segmento de datos, por lo que necesitas un mutex siempre que quieras tocar las variables del programa.

Sobre el código (se me acaba de ocurrir, no se si irá bien), necesitas 2 contadores, 1 para el numero de hilos, y otro para el numero que llevas escrito en pantalla. Y un semáforo n-ario tambien con el numero de hilos.

Cada hilo escribirá en pantalla el numero que haya en el contador de pantalla (en caso de ser igual al numero de hilos, sale) (ojo mutex) y decrementará el otro contador (ojo mutex tb). Si este ultimo está a 0, volverá a poner el semáforo n-ario a su valor inicial, levantando todos los hilos, y pondrá el contador de hilos al valor inicial, y decrementará el contador de pantalla (ojo mutex en todo lo que toque una variable). Todo esto dentro de un bucle infinito (while (1)).

Espero que te sirva, luego miro si has puesto algo algo. Saludos

B

Si, yo tambien estaba pensando en hacer eso.

Muchas gracias por la informacion ;)

Usuarios habituales