Simulacao em C++

Galera, vou expressar minha duvida
A situacao é a seguinte, estou desenvolvendo um projeto que é uma simulacao de um banco e gostaria de dicas de pessoas que ja fizeram algum projeto relacionado a isso(simulacao). Minhas dúvidas não são em relação a implementacao de funcionalidade de caixas, dos clientes, do banco etc. Minhas dúvidas são relacionadas ao controle de ''evento". Suponhamos que o usuario entre com o tempo que deseja simular, e o intervalo de chegada de novos clientes, ambos em segundos(Ficticio). E por exemplo uma situacao que estou quebrando a cabeca para solucionar, como poderia fazer com que um metodo continuem executando enquanto faço outras coisas, porém sem utilizar threads. Tipo minha situacao é a seguinte tenho um é método que gera clientes em intervalos de “10segundos”( um for de 0 ate 10 que seriam 10segundos). Segue exemplo dele

[code]}
Cliente* Evento::gerarClientesAleatorio(int tempoTotalSimulacao,
int tempoMediaChegadClientes) {
//suponha tempoMediaChegadClientes =10(segundos)
Cliente* cliente;
//se o tempo de simulacao é 30minutos->1800segundos->1800/10(10segundos a cada novo cliente, ou seja 180 clientes serão gerados)???
for (int i = 0; i < tempoTotalSimulacao / tempoMediaChegadClientes; i++) {
//cada “10segundos” gera um novo cliente
for (int i = 0; i < tempoMediaChegadClientes; i++) {
//“aguarda” o tempo de chega de novos clientes???
}

	return 	 new Cliente();;
}
return NULL;

}
[/code]

Eu sei que o return interrompe a execucao e que este método esta errado só tentei expressar meu pensamento, tentarei resolver isso, mas o PROBLEMA maior não é isso, seria esse meu controle, pois veja bem os clientes são gerados até o ultimo “segundo” de execucao do programa, e a maneira que eu estou fazendo isso não está certo pois eu estou apenas fazendo um cálculo e vendo quantos clientes entrariam naquele determinado tempo. Vou ser sincero estou numa confusão mental, e tenho quase certeza que não é para utilizar threads. Mas preciso de uma direção pois nunca fiz uma simulacao e estou quebrando a cabeca com esse controle de “evento”. Vou resumir como seria meu projeto, cada intervalo de tempo X, chegam novos clientes, automaticamente é feito um random para cada cliente referente a qtProdutos que ele vai comprar e automaticamente ele “ira” buscar a menor fila existente(há outras regras de negocio etc). E isso se repetirá até acabar o tempo total de simulacao definido pelo usuario. Gostaria se possível de dicas de como controlar esses eventos, se possível exemplos de uma situacao em que um metodo(geraClientes) seria chamado a cada intervalo de tempo X , enquanto os outros clientes(ou qq outro objeto) estariam executando acoes dentro do supermercado.
Grato, qualquer ajuda é válida
Att.

Seu problema é de concorrência e partilhamento de recursos, threads seriam bem funcionais, mas se não tiver interesse pode implementar na marra estes recursos de partilha de tempo e tratamento de concorrência.

Um modo fácil de analisar o problema seria que numa simulação tenho coisas ocorrendo ao mesmo tempo, posso simular esse comportamento realizando as ações em um curto espaço de tempo.

Crie um loop infinito, dentro do loop as ações são sorteadas e executadas, isso dá uma boa simulação, mesmo que as ações não ocorram realmente ao mesmo tempo, é viável lembrar que quanto menor o tempo de execução de uma operação sorteada melhor a precisão da simulação.

Uma alternativa caso as operações tenham um consumo de tempo elevado seria partir essas ações em outras menores, mas isso gera mais complexidade.

De fato esse é um problema de paralelismo e existem livros sobre o assunto, estude um pouco de Sistemas Operacionais, na parte de tratamento de concorrência e processos, vai clarear muita coisa.