Simulação
Produtor
Status: Pronto
#define N 5
while (TRUE) {
    item = produce_item();
    if (count == N)
        sleep();
    insert_item(item);
    count = count + 1;
    if (count == 1)
        wakeup(consumer);
}
count: 0
Consumidor
Status: Pronto
#define N 5
while (TRUE) {
    if (count == 0)
        sleep();
    item = remove_item();
    count = count − 1;
    if (count == N − 1)
        wakeup(producer);
    consume_item(item);
}