Como Usar
A janela da simulação é composta por três botões. Um dos botões diz respeito ao produtor, "Executar Produtor". Quando apertado, é simulada a execução da linha destacada no código do processo produtor - o destaque em uma linha indica que ela é a próxima a ser executada. Outro botão, "Executar Consumidor" faz o mesmo, mas para o processo consumidor. Por fim, o terceiro, "Desfazer", desfaz a última execução feita. A realização da simulação traduz-se na atualização de maneira devida do estado do buffer, do valor da variável count - cuja função é manter a contagem do número de itens no buffer -, das próximas linhas a serem executadas e dos status dos processos produtor e consumidor, o qual pode ser "Pronto", "Executando" ou "Bloqueado".
Ao utilizar a simulação, o usuário faz o papel de escalonador de processos. Este é um dos tópicos que a simulação ilustra e pode ajudar a compreender, além da semântica das primitivas sleep e wakeup, seu uso para sincronização de processos, situações de race condition, a origem da necessidade de semáforos, etc.