3 - Buffer de cinco posições (Buffer Circular)

A solução para o problema de um único acesso por vez pode ser minimizado por meio do aumento da quantidade de posições do buffer. Essa técnica é muito utilizada por threads que compartilham recursos e operam nas mesmas velocidades médias.

Lembrando que a integridade do buffer deve e continuará a ser mantida. Não se pode admitir perdê-la, nunca! Resolver esse problema relacionado à performance sob o aspecto específico do qual estamos tratando, envolve aumentar a quantidade de posições do buffer para, por exemplo, cinco posições.

Observe que o buffer continuará de tamanho fixo, contudo agora ele terá cinco posições disponíveis. Esse buffer não será dinâmico (tamanho variável), apesar de também ser uma solução possível. Portanto, essa solução que iremos demonstrar aqui, de um buffer de cinco posições fixas, é denominada de Buffer Circular.

Obviamente, cada uma das threads (produtor ou consumidor) poderá realizar, no máximo, cinco acessos consecutivos antes de ter que parar/esperar/interromper o seu processamento e aguardar pela outra thread. Deste modo iremos aumentar efetivamente e significativamente o tempo em que cada thread permanece no estado de executável melhorando o turnaround do programa como um todo. A seguir, veja o código e exemplo.

Copyright © 2016 AIEC.