23 lines
984 B
Plaintext
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. |