5 meneos
196 clics
Coordinar la escritura de un archivo
Buenas ver si podéis ayudarme. Tengo un programa donde pueden participar N personas realizando tareas repitiendo estás tareas durante una cantidad de rondas. Cada una lo hace en paralelo.
Lo que busco es que al final de cada ronda, se escriba en un fichero los datos de los resultados de ea tarea de todos los participantes.
El problema es eso que se ejecuten paralelo y no hay ningún proceso central que los coordine. Bueno , pueden guardar datos en memoria que todos comparten
¿Qué pensáis que puedo hacer?
EDITADO :SOLUCIONADO
Lo que busco es que al final de cada ronda, se escriba en un fichero los datos de los resultados de ea tarea de todos los participantes.
El problema es eso que se ejecuten paralelo y no hay ningún proceso central que los coordine. Bueno , pueden guardar datos en memoria que todos comparten
¿Qué pensáis que puedo hacer?
EDITADO :SOLUCIONADO
|
comentarios cerrados
Entiendo dos procesos separados:
1) El participante X (en paralelo con los otros) realiza una tarea y la termina, o no... (aquí el algoritmo que haga lo que tenga que hacer con la tarea, desde servirla, controlar el tiempo y la respuesta, grabarlas en ficheros independientes, etc.
Y cuando finaliza la ronda (por tiempo, culminación de todas las tareas, etc.)
2) Se cierran las tareas que queden abiertas y se procede a la lectura de todas las tareas y su integración en el fichero único (luego se destruyen los ficheros de las tareas individuales)
mutex.Lock();
hacer_el_seek_en_fichero();
escribir();
mutex.Unlock();
Todas las tareas se acaban.
Tenia en mente buscar alguna manera de quienes es el último en acabar. Tal vez usando la memoria que todos comparten. Y entonces el último puede escribir en un fichero los registros de esa ronda.
Pero no se
Bueno conforme acaban voy poniendoles en una array que comparten, inmediatamente después cada uno comprueba si el array ya tiene a todos los participantes. Esto solo ocurrirá cuando el último acabe y se añada. Cuandoestopase pues escriben el fichero.
Seguro que es muy cutre esta solución pero funciona de momento jeje.
No lo creo.