Foros del Web » Programación para mayores de 30 ;) » Programación General »

Duda con el funcionamiento de Pthread en C

Estas en el tema de Duda con el funcionamiento de Pthread en C en el foro de Programación General en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 21/06/2007, 23:48
Avatar de Zeromus  
Fecha de Ingreso: junio-2007
Mensajes: 3
Antigüedad: 17 años, 5 meses
Puntos: 0
Pregunta 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!
  #2 (permalink)  
Antiguo 27/06/2007, 16:34
 
Fecha de Ingreso: febrero-2007
Mensajes: 163
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: Duda con el funcionamiento de Pthread en C

Si el vector lo tenes en memoria es probable que lo hagas inmediatamente y no le des ningun ciclo de cpu como para atender el otro hilo. Proba de ponerle un sleep o un usleep y ahi seguramente te va a desordenar los vectores.
  #3 (permalink)  
Antiguo 27/06/2007, 21:59
Avatar de Zeromus  
Fecha de Ingreso: junio-2007
Mensajes: 3
Antigüedad: 17 años, 5 meses
Puntos: 0
De acuerdo Solucionado!.... creo!

Vale... gracias...


De todos modos... El otro día, el viernes, si no me ekivoco... seguí probando hasta que se me ocurrió que hacer...!
Primero igual probé con un sleep... pero aún así me salía todo secuencial... =/
Después se me ocurrió setear la política de calendarización en los atributos ke le enviaba a pthread_create( );...... y la tiré a Round Robin... creo ke era una wena idea... pero no noté muchos cambios tampoco =S... no sé por ké...
Entonces se me ocurrió usar sched_yield( ); para hacer que el hilo actual ceda el uso del procesador... y todo bien!


Al fin logré mi tan buscada concurrencia... al final no era gran problema y no se como no se me había ocurrido antes ceder el procesador...!
Lo weno es ke ya lo logré y pude después jugar con la exclusión y todo eso.. y todavía tngo pa jugar harto más =P ...

Aprovecho de contarlo acá, para ke si es ke hay alguien con el mismo problema... pueda ver ke puede hacer eso para solucionarlo, antes de ke se deprima y cierre el editor xD...


Saludos a todos! y gracias Osqar por tu respuesta!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:40.