philosophers_prep/9_death_monitor.txt

21 lines
944 B
Plaintext

Assignment name: death_monitor
Expected files: death_monitor.c
Allowed functions: memset, printf, malloc, free, write, pthread_create, pthread_detach,
pthread_join, pthread_mutex_init, pthread_mutex_destroy, pthread_mutex_lock,
pthread_mutex_unlock, usleep, gettimeofday
---
Cria um sistema com:
- 4 threads "worker" que fazem trabalho por períodos variados (1-4 segundos)
- 1 thread monitor que verifica se algum worker não dá "sinal de vida" há mais de 3 segundos
- Workers devem atualizar `last_activity_time` a cada iteração
- Monitor verifica a cada 100ms e imprime aviso se detectar worker "morto"
Simula "morte" fazendo um worker parar aleatoriamente.
Uso: `./death_monitor`
Hint: Este exercício simula a detecção de morte no Philosophers.
O monitor thread deve verificar continuamente sem bloquear os workers.
Usa mutex para proteger `last_activity_time`.
A detecção deve ser rápida (dentro de 10ms no projeto real).