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.