Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema al trabajar con programa multihilo

Estas en el tema de Problema al trabajar con programa multihilo en el foro de C/C++ en Foros del Web. tengo un programa con 2 hilos: - uno esta esperando peticiones en un socket. cuando la recibe, digamos, para simplificar, que pone la variable global ...
  #1 (permalink)  
Antiguo 05/08/2009, 02:50
 
Fecha de Ingreso: enero-2007
Mensajes: 78
Antigüedad: 17 años, 3 meses
Puntos: 2
Problema al trabajar con programa multihilo

tengo un programa con 2 hilos:

- uno esta esperando peticiones en un socket. cuando la recibe, digamos, para simplificar, que pone la variable global "vble1", que por defecto vale -1, al valor del identificador del socket.

- el otro hilo esta esperando que haya peticiones que atender, y eso se mira cuando la vble1 vale distinto de -1, es decir, cuando el hilo principal recibio una peticion.

ahora bien, tengo un problema, y es que el segundo hilo, que no acabe hasta que no le manden una señal (tengo un while(1), pongamos), solo se da cuenta de que vble1 vale distinto de -1 si pongo un sleep() o un printf. vaya, algo que haga esperar un poco. es como si no se diese cuenta de que la variable global se actualizó, y si no pongo nada de lo anterior sigue pensando que vble1 vale -1.

alguien sabe por que puede ser? problemas de sincronizacion o algo?

agradeceria infinitamente algo de ayuda.

gracias.
  #2 (permalink)  
Antiguo 05/08/2009, 06:30
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Respuesta: Problema al trabajar con programa multihilo

Si, si la variable es global y ambos hilos intentan acceder a la misma tenes que usar algun tipo de sincronizacion, un ejemplo son las secciones criticas.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
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 20:21.