24 lines
1.0 KiB
Plaintext
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.
|