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