RE:Problemas de concurrencia
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.