21/06/2007, 23:48
|
| | | Fecha de Ingreso: junio-2007
Mensajes: 3
Antigüedad: 17 años, 5 meses Puntos: 0 | |
Duda con el funcionamiento de Pthread en C Hola a todos!
Soy nueva en este foro, así ke espero no cometer ninguna imprudencia =P... sorry si lo hago...
En C tngo experiencia, pero no me había puesto a adentrarme en el mundo de la concurrencia, así ke mi consulta les puede parecer de todos modos medio tonta!. Ya he trabajado con fork, pero ahora stoy probando POSIX con pthread, ayudándome de un libro wenísimo ke me pillé por ahí: Unix, Programación Practica, de Kay y Steven Robbins. Se los recomiendo a kienes no lo han tenido en sus manos!.
Mi problema es el siguiente:
Tengo una duda sobre como funcionan los hilos ke voy creando con pthread. El código ke stoy haciendo crea 3 hilos y cada uno llama a una función ke crea un vector de enteros aleatorio y lo muestra en pantalla. Cuando veo los resultados en pantalla noto ke van de todos modos apareciendo de manera secuencial. Primero muestra todo lo ke el hilo1 tiene ke imprimir, y sólo cuando el hilo1 ha terminado, recién el hilo2 empieza a trabajar, y lo mismo con el 3.
Lo ke me hubiese gustado haber visto en pantalla hubiese sido una mezcla de las impresiones del hilo 1, 2 y 3 en desorden. Digo, ke se imprimiese parte del vector del hilo1 y luego una parte del 2, y luego del 3, y luego del 1 de nuevo... para saborear más la concurrencia y después motivarme a programar métodos de exclusión mutua y cosas por el estilo.
Se me ocurre ke es el mismo operativo el ke me hace exclusión al momento en ke pido la salida en pantalla, para ke cada hilo trabaje solito hasta ke termine de imprimir. Pero de todos modos me entra la duda de si estoy en lo correcto, o hay algo ke no estoy considerando sobre el funcionamiento de pthread???
Si estoy en lo correcto, como puedo lograr ke el operativo me deje manejar a mi la competencia de los hilos para poder probar unas ideas de exclusión mutua ke tengo (ke fue por lo ke empesé a probar concurrencia)???
Si no estoy en lo correcto, me podría alguien ke sea wenito guiar en lo ke esté ekivocada???
Desde ya muchas gracias!
Ah... por cierto!
Stoy trabajando en Ubuntu (Dapper Drake) 6.06...
Saludos, gracias de nuevo!, y ke tengan un lindo día! |