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

consulta multihilos

Estas en el tema de consulta multihilos en el foro de C/C++ en Foros del Web. Hola tengo un problema con una aplicación que crea múltiples threads. Para ello estoy usando el método: int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), ...
  #1 (permalink)  
Antiguo 09/07/2012, 04:45
 
Fecha de Ingreso: julio-2012
Mensajes: 1
Antigüedad: 11 años, 9 meses
Puntos: 0
consulta multihilos

Hola tengo un problema con una aplicación que crea múltiples threads. Para ello estoy usando el método:

int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine)(void*), void *arg);

El problema que tengo es que le estoy pasando una clase api en el ultimo parámetro arg que es común para todos los hilos que contiene métodos comunes y alguna variable que es personal para cada hilo.

El problema que tengo es que en el transcurso de crear el hilo y recoger la información en el método del thread (hacer cast de la clase y recuperar esta información personal de cada hilo) el hilo siguiente "machaca esta información con la suya".

Como ejemplo digamos que tenemos una clase api que contiene:

int idevento;
void ejecutarEvento (evento);

el siguiente hilo me machaca el id del evento y se me ejecuta siempre el ultimo evento.

Espero haberme explicado bien.

Alguien se le ocurre alguna idea para que pueda intentar alguna otra cosa?

Muchas gracias de antemano y espero haberme explicado bien.
  #2 (permalink)  
Antiguo 09/07/2012, 08:34
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: consulta multihilos

Por cada thread deberias reservar memoria. Usa malloc o new para hacer. Asi no se comparte memoria y safas de esos problemas....

Sino tenes que usar semaforos para sincronizar la lectura de ese espacio de memoria.

Etiquetas: int, multihilos, variables
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:09.