philosophers_prep/3_precise_timing.txt

24 lines
1.0 KiB
Plaintext

Assignment name: precise_timing
Expected files: precise_timing.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 as seguintes funções:
- `long long get_current_time()` - retorna o tempo atual em milissegundos
- `void precise_sleep(int ms)` - dorme por exatamente X milissegundos
- `long long time_diff(long long start, long long end)` - calcula diferença entre tempos
Cria um programa que testa estas funções:
1. Mede o tempo de início
2. Dorme por 100ms usando precise_sleep
3. Mede o tempo de fim
4. Imprime a diferença (deve ser ~100ms)
Uso: `./precise_timing`
Hint: gettimeofday() é crucial no projeto Philosophers.
usleep() não é sempre preciso, por isso tens de verificar o tempo periodicamente.
No Philosophers, o timing preciso é essencial para detectar mortes.