Duda mutex y declaración de variables
Publicado por Cris_Y (6 intervenciones) el 18/02/2010 13:13:36
Hola buenas,
quería haceros un par de consultas sobre un programa que estoy realizando.
Es un programa cliente-servidor con sockets en C. La duda es en el cliente: el cliente recibe continuamente paquetes del servidor, entonces en el cliente creo un hijo. El padre se encarga de rellenar unos arrays y una matriz de forma secuencial, a medida que le llegan los paquetes del servidor; mientras, el hijo se encarga de acceder a diferentes filas de esa matriz y esos arrays y opera con ellos.
Duda 1:
Ya que el hijo tan sólo va a leer o modificar filas de estas variables compartidas, había pensado en hacer un mutex (por si el hijo va "más rápido"que el padre y pretende acceder a una fila que aún no existe y leer u operar). Pero no me decido; ¿qué uso?, ¿mutex?, ¿monitor?, ¿cerrojo?, ¿semáforo?... todo viene a ser lo mismo, pero me gustaría que me recomendarais qué es más útil.
Por cierto, el hijo lo creo con fork(), ¿sería mejor, que utilizara p_thread_create?
Duda 2:
parte del pseudocódigo del programa es:
Creo hijo
Ciclo for
//PADRE
si no es el primer paquete que recibe, actualiza sin más
si es el primero, crea la variables que va a utilizar él Y EL HIJO
//HIJO
Operaciones, lecturas y demás
Fin ciclo for
Mi duda es, ¿puedo crear las variables que utiliza el hijo en ese fragmento de código del padre, o es un error hacerlo así?. Es que si las inicializo en el hijo, me las crearía a cada vuelta del ciclo for, y no quiero eso. Me lío un poco siempre con el tema de dónde declarar variables :(
Muchas gracias de antemano, espero haberme explicado bien y que alguien pueda ayudarme :)
quería haceros un par de consultas sobre un programa que estoy realizando.
Es un programa cliente-servidor con sockets en C. La duda es en el cliente: el cliente recibe continuamente paquetes del servidor, entonces en el cliente creo un hijo. El padre se encarga de rellenar unos arrays y una matriz de forma secuencial, a medida que le llegan los paquetes del servidor; mientras, el hijo se encarga de acceder a diferentes filas de esa matriz y esos arrays y opera con ellos.
Duda 1:
Ya que el hijo tan sólo va a leer o modificar filas de estas variables compartidas, había pensado en hacer un mutex (por si el hijo va "más rápido"que el padre y pretende acceder a una fila que aún no existe y leer u operar). Pero no me decido; ¿qué uso?, ¿mutex?, ¿monitor?, ¿cerrojo?, ¿semáforo?... todo viene a ser lo mismo, pero me gustaría que me recomendarais qué es más útil.
Por cierto, el hijo lo creo con fork(), ¿sería mejor, que utilizara p_thread_create?
Duda 2:
parte del pseudocódigo del programa es:
Creo hijo
Ciclo for
//PADRE
si no es el primer paquete que recibe, actualiza sin más
si es el primero, crea la variables que va a utilizar él Y EL HIJO
//HIJO
Operaciones, lecturas y demás
Fin ciclo for
Mi duda es, ¿puedo crear las variables que utiliza el hijo en ese fragmento de código del padre, o es un error hacerlo así?. Es que si las inicializo en el hijo, me las crearía a cada vuelta del ciclo for, y no quiero eso. Me lío un poco siempre con el tema de dónde declarar variables :(
Muchas gracias de antemano, espero haberme explicado bien y que alguien pueda ayudarme :)
Valora esta pregunta


0