philosophers_prep/7_limited_resources.txt

23 lines
984 B
Plaintext

**Assignment name**: limited_resources
**Expected files**: limited_resources.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
---
Simula uma biblioteca com 3 computadores partilhados entre 10 estudantes:
- Cada estudante (thread) quer usar um computador por 2-5 segundos (tempo aleatório)
- Apenas 3 estudantes podem usar computadores simultaneamente
- Implementa um "semáforo" usando mutexes e uma variável contador
Imprime quando estudantes:
- Chegam à biblioteca
- Conseguem um computador
- Terminam de usar o computador
- Saem da biblioteca
**Uso**: `./limited_resources`
**Hint**: Como POSIX semáforos não são permitidos no mandatory part,
implementa o teu próprio semáforo com mutex + contador + condition logic.
Este exercício simula a limitação de recursos como no Philosophers com forks.