Estou fazendo um projeto de simulação de um banco, e para o mesmo o usuário entraria com o tempo total que deseja simular, e o tempo medio de chegada de clientes ao banco. Porém me surgiu uma dúvida(principalmente por ser em c++), como posso desenvolver estes 2 requisitos? É necessário utilizar threads para este caso? Ou só complicaria? Apenas controlando com loops? A idéia seria iniciar a simulação com os dados passados pelo usuário , e terminar a simulação apenas quando se esgotar o tempo desejado de simualação, logo após isso será mostrado dados estatisticos da simulação. Qualquer ajuda é válida, pois nunca desenvolvi simulações e estou tendo dificuldades nesse “controle de tempo”.
Desde ja agradeço.
Att
Cronometro em C++
3 Respostas
Depende do que você queira na simulação. Se for um trabalho para faculdade, e não for obrigatório usar threads, eu não usaria.
Para pegar o tempo do sistema, você pode usar a boost::chrono, a boost::date_time ou, se não quiser usar uma biblioteca externa, a ctime.
Se for usar threads, eu recomendo fortemente que use a boost::thread:
http://www.boost.org/doc/libs/1_52_0/doc/html/thread.html
Se seu compilador suportar o C++11, você pode substituir a boost::thread pela std::thread. São idênticas.
Finalmente, se for usar interface gráfica, provavelmente o QT irá ter alternativas para todos esses problemas.
É um projeto da faculdade, porém ele não mencionou o uso de threads(fica a critério do aluno), a minha dúvida com relação a um controle de tempo é devido estas necessidades
O usuario pode selecionar a opção “Iniciar simulacao”? Além disso existem requisitos que utilizam tempo , como por exemplo, se o cliente for atendido por um caixa com desempenho ruim levará X segundos, com desempenho otimo levara Y segundos por isso minha dúvida se utilizar threads ou não. O que foi mencionado é que haverá um relógio interno, e a cada passada entre todos os caixas do banco, será recolhida algumas informações referente a fila de clientes de cada caixa, etc, e após essa passada será incrementado 1 segundo do relógio interno até que esse relógio interno alcance o tempo determinado de simulação. Minha dúvida se resume basicamente a controle de tempo real, se desejar 10 segundos então levará 10 segundos, mas por eu nunca ter feito nada referente a isso, apenas controles de laços normais tipo … while( i< 50) . Tipo não sei se estou falando besteira mas o que imagino que seja necessário seria algo do tipo
Inventei isso, mas existe algo em c++ que possibilite trabalhar com o ‘‘tempo’’ de forma simples? Seria threads a solução? Desculpe minhas dúvidas, mas nunca fiz nada comparado a uma simulação utlizando tempo, e usei muito poucas vezes threads e ainda foram em java. Se tiver mais alguma dica será muito útil.
Agradeço.
Att
Não acho que threads sejam necessárias. Você só vai precisar:
a) De uma struct, para guardar as informações do cliente;
b) De uma ou duas listas, para saber se ele está aguardando atendimento ou já foi atendido.
Para as listas, use a classe vector.
Para controlar o tempo, use o ctime, ou alguma das bibliotecas da boost que indiquei.