Este projeto visa implementar um sistema de simulação para detecção de incêndios utilizando programação paralela e distribuída com pthreads e monitores para comunicação e sincronização entre threads. A simulação envolve a criação de funções que utilizam monitores para permitir a comunicação segura entre diferentes threads que simulam nós sensores em uma matriz. Também é necessário implementar uma thread que gera incêndios aleatórios periodicamente.
O sistema simula o monitoramento de incêndios em uma floresta representada por uma matriz de 30x30 células, onde cada célula é monitorada por um nó sensor. Os sensores comunicam entre si para detectar e propagar informações sobre incêndios. Em casos onde o nó está localizado na borda da matriz, ele envia mensagens para uma thread central responsável por registrar os eventos de incêndio e iniciar o combate ao fogo. Além disso, uma thread geradora de incêndios cria incêndios aleatórios em intervalos regulares.
-: Área livre.T: Célula monitorada por um nó sensor ativo.@: Célula em chamas (fogo ativo)./: Célula queimada.
- Tamanho da Floresta: Uma matriz de 30x30 que representa a área monitorada.
- Nó Sensor:
- Cada nó é representado por uma thread independente.
- As threads comunicam-se com seus vizinhos usando monitores para garantir exclusão mútua e comunicação segura (utilizando
mutexese variáveis de condição).
- Thread Geradora de Incêndios:
- Gera incêndios aleatórios na matriz a cada intervalo de tempo (por exemplo, 3 segundos).
- Marca a célula selecionada como fogo
@.
- Central de Controle:
- Coleta mensagens dos nós localizados na borda da matriz.
- Atua para combater incêndios quando necessário.
- Combate ao Fogo:
- Função que altera o estado das células em chamas
@para células queimadas/.
- Função que altera o estado das células em chamas
- Utilizar
pthreadspara a criação das threads (sensores, central e geradora de incêndios). - Implementar monitores para comunicação e sincronização das threads.
- Garantir exclusão mútua com
mutexese controlar o fluxo de mensagens entre os nós com variáveis de condição. - Seguir boas práticas de programação e modularidade no código.