philosophers_prep/8_simple_philosophers.txt

19 lines
937 B
Plaintext

Assignment name: simple_philosophers
Expected files: simple_philosophers.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
---
Implementa uma versão simplificada do problema dos filósofos:
- 3 filósofos sentados numa mesa circular
- 3 forks (um entre cada par de filósofos)
- Cada filósofo alterna entre: pensar (1s) → pegar forks → comer (1s) → largar forks → repetir
- Programa corre por 10 segundos e depois pára
Cada ação deve ser impressa: `[timestamp] Philosopher X is thinking/eating`
Uso: `./simple_philosophers`
Hint: Este é o núcleo do projeto Philosophers. Cada fork é protegido por um mutex.
Para evitar deadlock, implementa uma ordem consistente para pegar forks (fork com ID menor primeiro).
Usa uma thread monitor para parar após 10s.