2 - Buffer de uma única posição

O problema se origina quando o produtor quer colocar um novo item no buffer, mas ele já está cheio (significa que o dado ainda não foi lido). Ou seja, o produtor não poderá gravar o dado no buffer, pois caso seja permitida a gravação do novo dado, aquele anteriormente gravado será sobrescrito e nunca mais poderá ser lido pelo consumidor.

A solução é pôr o produtor para dormir e somente despertá-lo quando o consumidor realizar a leitura do item presente no buffer.

De modo análogo, se o consumidor quiser ler um item do buffer e o mesmo estiver vazio, ele não poderá prosseguir, pois corre o risco de ler um “lixo” de memória (valor inválido ou já lido anteriormente).

Deste modo, o consumidor deve ser posto para dormir até que o produtor escreva novamente no buffer e possa despertá-lo.

Veja a seguir o código de exemplo.

Copyright © 2016 AIEC.