next up previous
Next: Requisitos Up: ep2 Previous: ep2

O Problema da Montanha Russa

Suponha que existam $n$ passageiros e um carro em uma montanha russa. Os passageiros, repetidamente, esperam para dar uma volta no carro. O carro tem capacidade para $C$ passageiros, com $C < n$. O carro só pode partir quando estiver cheio. Após dar uma volta na montanha russa, cada passageiro passeia pelo parque de diversões e depois retorna à montanha russa para a próxima volta.

Tanto o carro como os passageiros devem ser representados por threads. As threads passageiro executam o seguinte pseudo-código:

    thread passageiro {
        while (!fechouParque) {
            entraNoCarro();
            esperaVoltaAcabar();
            saiDoCarro();
            passeiaPeloParque(); // tempo variável
        }
    }

A thread carro executa o seguinte pseudo-código:

    process carro {
        while (existemPassageirosNoParque) {
            esperaEncher();
            daUmaVolta();
            esperaEsvaziar();
            volta++; // serve como parâmetro para fechar o parque
        }
    }



Francisco Reverbel
2006-04-24