C/Visual C - Problemas de concurrencia

 
Vista:

Problemas de concurrencia

Publicado por laura (2 intervenciones) el 31/03/2005 19:07:23
Estoy programando en C++ para Linux. Cuando hago varias llamadas al sistema chdir() resultantes de invocaciones concurrentes de varios clientes, ¿es posible que se den problemas de concurrencia?
En el caso de haber problemas me han dicho que se pueden solucionar usando la función pthread_mutex_t.
Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problemas de concurrencia

Publicado por chuidiang (677 intervenciones) el 03/04/2005 06:43:22
Hola:

No sé si la función chdir() se puede usar con varios hilos. El man no dice nada al respecto.
Si usas hilos y varios de ellos llaman a chdir, como sólo hay un directorio de trabajo, supongo que al final quedará el del últmo que llame. Si cada hilo necesita su directorio para hacer cosas, puedes tener problemas al hacer esas cosas. Por ejemplo, si el hilo 1 hace un chdir para leer un fichero en ese directorio, puede ser que hilo 1 cambie a ese directorio y antes de leer el fichero, hilo 2 le cambie a otro.
Si utilizas procesos (con fork()), no tendrás ningún problemas, puesto que cada proceso tiene su propio directorio de trabajo.

Si es el caso de hilos, efectivamente con pthread_mutex() puedes solucionarlo. El mutex es como un semaforo al que los hilos tienen que esperar para hacer algo. Cuano un hilo necesite cambiar de directorio, debe "esperar" el semaforo, hacer lo que tenga que hacer y "liberar" el semaforo para el siguiente hilo. Tienes un ejemplo de uso de esta funcion en http://www.geocities.com/chuidiang/procesos/mashilos.html#mutex

Se bueno.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar