
Ayuda urgente para saber como programar esto en C
Publicado por Max (1 intervención) el 25/11/2016 01:30:24
Desarrollar un programa en el cual
1. Se creen 2 hilos, además del hilo principal.
2. Estos 2 hilos representan 2 agentes, cada uno de los cuales busca en paralelo sobre un mapa.
3. El mapa puede tener espacios libres y ocupados.
4. Se debe especificar la posición de inicio de ambos hilos (agentes) por separado en el archivo de texto donde se define el mapa (deben comenzar en posiciones distintas el uno del otro). Es decir que, en lugar de tener una única línea:
…
inicio=(…, ..)
…
Habrán 2 líneas similares:
…
inicio_agente_1=(…, ..)
inicio_agente_2=(…, ..)
…
5. La meta sí es única, y compartida por ambos agentes
6. Los hilos deben mantener en una lista enlazada los nodos "infructíferos", nodos que no son la meta y cuyos hijos han sido completamente explorados y tampoco llevan a la meta.
7. Los hilos pueden compartir la lista de nodos infructíferos en una variable global
8. Cada vez que uno de los hilos evalúa un nodo para "moverse" a él, además de las verificaciones normales de límites del mapa, ocupado/vacío, etc. se debe verificar si es un nodo infructífero (es decir, uno de los nodos explorados por el otro agente y que ha sido descartado por no contener la meta en ninguno de sus descendientes).
9. Mientras los hilos secundarios recorren el mapa, el hilo principal debe desplegar por pantalla:
1. El estado inicial del mapa, con los espacios libres y ocupados. Los espacios libres se representan con un espacio, los espacios ocupados con un asterisco (*)
2. La posición actual de cada uno de los hilos, utilizando un símbolo distinto para cada uno (ej: las letras A y B).
3. La posición final buscada, con la letra X
10. Cuando cualquiera de los hilos secundarios encuentra la meta, debe informar al hilo principal y al otro hilo, y la búsqueda concluye. Esto puede hacerse con una única variable global de estado, similar a la variable “en_ejecución” utilizada en alguno de los programas de ejemplo. No es necesario manejar señales para esto, simplemente se cambia el estado de la variable, y todos los hilos verifican el estado de la misma antes de seguir explorando el árbol.
11. En el punto en que cada hilo toma la decisión de qué nodo hijo explorar, se debe llamar a la función sleep o usleep para bloquear el agente por 1 segundo, de manera de poder visualizar gráficamente la evolución en el mapa.
1. Se creen 2 hilos, además del hilo principal.
2. Estos 2 hilos representan 2 agentes, cada uno de los cuales busca en paralelo sobre un mapa.
3. El mapa puede tener espacios libres y ocupados.
4. Se debe especificar la posición de inicio de ambos hilos (agentes) por separado en el archivo de texto donde se define el mapa (deben comenzar en posiciones distintas el uno del otro). Es decir que, en lugar de tener una única línea:
…
inicio=(…, ..)
…
Habrán 2 líneas similares:
…
inicio_agente_1=(…, ..)
inicio_agente_2=(…, ..)
…
5. La meta sí es única, y compartida por ambos agentes
6. Los hilos deben mantener en una lista enlazada los nodos "infructíferos", nodos que no son la meta y cuyos hijos han sido completamente explorados y tampoco llevan a la meta.
7. Los hilos pueden compartir la lista de nodos infructíferos en una variable global
8. Cada vez que uno de los hilos evalúa un nodo para "moverse" a él, además de las verificaciones normales de límites del mapa, ocupado/vacío, etc. se debe verificar si es un nodo infructífero (es decir, uno de los nodos explorados por el otro agente y que ha sido descartado por no contener la meta en ninguno de sus descendientes).
9. Mientras los hilos secundarios recorren el mapa, el hilo principal debe desplegar por pantalla:
1. El estado inicial del mapa, con los espacios libres y ocupados. Los espacios libres se representan con un espacio, los espacios ocupados con un asterisco (*)
2. La posición actual de cada uno de los hilos, utilizando un símbolo distinto para cada uno (ej: las letras A y B).
3. La posición final buscada, con la letra X
10. Cuando cualquiera de los hilos secundarios encuentra la meta, debe informar al hilo principal y al otro hilo, y la búsqueda concluye. Esto puede hacerse con una única variable global de estado, similar a la variable “en_ejecución” utilizada en alguno de los programas de ejemplo. No es necesario manejar señales para esto, simplemente se cambia el estado de la variable, y todos los hilos verifican el estado de la misma antes de seguir explorando el árbol.
11. En el punto en que cada hilo toma la decisión de qué nodo hijo explorar, se debe llamar a la función sleep o usleep para bloquear el agente por 1 segundo, de manera de poder visualizar gráficamente la evolución en el mapa.
Valora esta pregunta


0