Enviado em 14/09/2016 - 11:46h
Bom dia pessoal estou fazendo FILA em c++ usando o code blocks e me deparei com um problema, eu coloquei uma "musica" para rodar em paralelo na mesma função segue abaixo o codigo, o problema é q assim q ele termina de fazer o for, ele vai executar o switchCase mas a "musica" não para ela continua, teria como eu para ela encerar assim q terminar de carregar o for? desde ja obrigadovoid geraPedidos()
{
system("color 40");
thread m (musica);
cout << "Aguarde carregar a fila... " << endl;
for (int i=0; i<10; i++)
{
Ingresso ing;
ing.geraIngresso();
f.enqueue(ing);
cout << i+1 << " ";
Sleep(rand()%2000);
//Beep(700,500);
}
m.join();
cout<< endl;
cout << "Fila carregada... " <<endl;
system("pause");
system("cls");
switchCase();
}
void verFila()
{
system("color 70");
system("cls");
f.exibir();
system("PAUSE");
system ("cls");
}
void atenderFila()
{
system("color 70");
system ("cls");
Ingresso ing = f.dequeue();
cout << "ATENDENDO: " <<endl;
cout << ing.descricao <<endl;
system("PAUSE");
system("cls");
}
void switchCase ()
{ system("color 71");
int opcao;
do
{
cout << "1. VER FILA DE INGRESSOS " <<endl;
cout << "2. ATENDER PEDIDO " <<endl;
cout << "3. Gerar mais Pedidos " << endl;
cout << "0. SAIR" <<endl;
cin >> opcao;
switch (opcao)
{
case 1: verFila();
break;
case 2: atenderFila();
break;
case 3: geraPedidos();
break;
;
}
system("cls");
}while (opcao!=0);
}
int main()
{ bemVindo();
f.inicializar();
//system("color 70");
srand(time(0));
thread t(geraPedidos);
//switchCase();
t.join(); //aguarda geraPedidos acabar sua execuчуo
return 0;