philosophers_prep/5_producer_consumer.txt

23 lines
1.0 KiB
Plaintext

Assignment name: producer_consumer
Expected files: producer_consumer.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 o problema clássico Producer-Consumer:
- 2 threads Producer: produzem items (números de 1 a 100) e colocam num buffer
- 2 threads Consumer: consomem items do buffer e processam-nos
- Buffer partilhado com capacidade limitada (10 items)
Regras:
- Producers devem esperar se buffer estiver cheio
- Consumers devem esperar se buffer estiver vazio
- Não deve haver race conditions
- Imprime quando items são produzidos/consumidos
Uso: `./producer_consumer`
Hint: Este exercício ensina-te a coordenação entre múltiplas threads com recursos limitados.
É similar ao problema dos forks no Philosophers.
Usa mutexes para proteger o buffer e condition variables ou sleep para coordenação.