Produtor/Consumidor POSIX
Problema
Este projeto consiste em usar semáforos POSIX para construir um sistema produtor/consumidor com buffer limitado. O código básico de um sistema produtor/consumidor é o seguinte:
produtor () { while (true) { pause = random (0..3) sleep (pause) down (s_vaga) down (s_buffer) item = random (0..999) insere item no buffer up (s_buffer) up (s_item) print item } } consumidor () { while (true) { down (s_item) down (s_buffer) retira item do buffer up (s_buffer) up (s_vaga) print item pause = random (0..3) sleep (pause) } }
Observações
As principais variáveis necessárias para implementar o projeto são:
item
: valor inteiro entre 0 e 999buffer
: fila de inteiros, inicialmente vazia, acessada com política FIFO. Deve ser usada a implementação de fila circular construída anteriormente. A fila pode conter até 5 elementos.s_buffer
,s_item
,s_vaga
: semáforos, devidamente inicializados
O sistema implementado deve ter 3 produtores e 2 consumidores. Ele deve produzir na tela uma saída com formato similar a este:
p1 produziu 337 p2 produziu 441 c1 consumiu 337 p3 produziu 649 p1 produziu 21 c2 consumiu 441 p2 produziu 178 c1 consumiu 649 ... ...
A entregar
Entregar o código implementado, sem esquecer de identificar o(s) autor(es).