19 lines
937 B
Plaintext
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. |