====== 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 999
* ''buffer'' : 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).