Uso de semáforos

Video deste projeto

Este projeto consiste em usar seu sistema, com as funções de semáforos implementadas no projeto anterior, para construir um sistema produtor/consumidor com buffer limitado.

Sistema produtor/consumidor

O código básico de um sistema produtor/consumidor é o seguinte:

Produtor

produtor
{
   while (true)
   {
      task_sleep (1000)
      item = random (0..99)

      down (s_vaga)

      down (s_buffer)
      insere item no buffer
      up (s_buffer)

      up (s_item)
   }
}

Consumidor

consumidor
{
   while (true)
   {
      down (s_item)

      down (s_buffer)
      retira item do buffer
      up (s_buffer)

      up (s_vaga)

      print item
      task_sleep (1000)
   }
}

Observações

p1 produziu 37
p2 produziu 11
                             c1 consumiu 37
p3 produziu 64
p1 produziu 21
                             c2 consumiu 11
p2 produziu 4
                             c1 consumiu 64
...                          ...

Observe que os números são consumidos na seqüência em que foram produzidos, o que caracteriza o comportamento FIFO do buffer.

Outras informações