24 lines
1.1 KiB
Plaintext
24 lines
1.1 KiB
Plaintext
Assignment name: race_detector
|
|
Expected files: race_detector.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 uma versão do problema dos filósofos que:
|
|
1. Detecta e reporta possíveis data races
|
|
2. Testa diferentes estratégias de otimização:
|
|
- Estratégia A: mutex global para todas as operações
|
|
- Estratégia B: mutex por fork + mutex para impressão
|
|
- Estratégia C: minimizar lock time
|
|
|
|
Inclui stress test: roda 100 iterações com diferentes configurações e reporta:
|
|
- Número de data races detectadas
|
|
- Performance (tempo total)
|
|
- Número de mortes
|
|
|
|
Uso: `./race_detector 4 410 200 200`
|
|
|
|
Hint: Use ferramentas como `valgrind --tool=helgrind` para detectar data races.
|
|
No projeto real, qualquer data race resulta em nota 0.
|
|
Testa com números ímpares e pares de filósofos, e com time_to_die muito próximo de time_to_eat. |