24 lines
1.1 KiB
Plaintext
24 lines
1.1 KiB
Plaintext
Assignment name: philosophers_bonus
|
|
Expected files: philosophers_bonus.c
|
|
Allowed functions: memset, printf, malloc, free, write, fork, kill, exit,
|
|
pthread_create, pthread_detach, pthread_join, usleep, gettimeofday,
|
|
waitpid, sem_open, sem_close, sem_post, sem_wait, sem_unlink
|
|
-------------------------------------------------------------------------
|
|
|
|
Implementa a versão bonus do Philosophers:
|
|
- Cada filósofo é um processo separado (não thread)
|
|
- Usa semáforos POSIX nomeados para coordenação
|
|
- Processo pai monitora todos os processos filhos
|
|
- Se um filósofo morre, mata todos os outros processos
|
|
|
|
Funcionalidades adicionais:
|
|
- Cleanup adequado de semáforos nomeados
|
|
- Handling de sinais (SIGINT, SIGTERM)
|
|
- Relatório final com estatísticas
|
|
|
|
Uso: `./philosophers_bonus 5 800 200 200 7`
|
|
|
|
Hint: Bonus part usa processos em vez de threads.
|
|
Semáforos POSIX nomeados permitem comunicação entre processos.
|
|
Usa fork() para criar processos filhos e waitpid() para monitorizar.
|
|
O cleanup de semáforos é crucial - usa sem_unlink() e handling de sinais para cleanup em caso de interrupção. |