22 lines
1.2 KiB
Plaintext
22 lines
1.2 KiB
Plaintext
Assignment name: philosophers_args
|
|
Expected files: philosophers_args.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 o problema completo dos filósofos com parsing de argumentos:
|
|
|
|
Argumentos: `number_of_philosophers time_to_die time_to_eat time_to_sleep [number_of_times_must_eat]`
|
|
|
|
Comportamento:
|
|
- Cada filósofo alterna: pensar → tentar pegar forks → comer → largar forks → dormir
|
|
- Se um filósofo não comer dentro de `time_to_die`, morre e programa termina
|
|
- Se `number_of_times_must_eat` especificado, programa termina quando todos comeram esse número de vezes
|
|
- Thread monitor verifica mortes a cada 1ms
|
|
|
|
Uso: `./philosophers_args 5 800 200 200` ou `./philosophers_args 5 800 200 200 7`
|
|
|
|
Hint: Este é praticamente o projeto Philosophers completo.
|
|
Implementa parsing robusto de argumentos, validação de inputs, e cleanup adequado de recursos.
|
|
A thread monitor é crítica - deve detectar morte rapidamente sem afetar performance. |