Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Nel programma seguente ci sono tre thread...
ovvero il main thread, e due thread figli...
mi sono accorto che le operazioni dei due thread
figli non vengono eseguite perchè il main
thread termina prima che i due thread figli
abbiano finito...
Come posso risolvere a questo problema??
Inoltre mi piacerebbe sapere come posso mettere
in PAUSA un thread e come TERMINARLO...
Ciao,
Quando un processo termina automaticamente vengono terminati tutti i suoi thread. Per ovviare a questo problema il tuo main thread deve ovviamente ricevere un input dall'utente per terminare. Ci sono vari e diversi modi per far ciò, tutto dipende dal tipo e dallo scopo del programma che si vuole realizzare. Ad esempio puoi decidere di terminare il processo quando viene premuta una combinazione di tasti tipo Ctrl+X:
// entry point del programma.
int main( int argc, char* argv[] )
{
// metodo1 thread
createThread(metodo1);
// metodo2 thread
createThread(metodo2);
while(1){
if(GetAsyncKeyState(VK_LCONTROL))
if(GetAsyncKeyState('X'))
break;
Sleep(150);
}
// per correttezza dv chiudere i thread ed uscire
// termina senza errori
return 0;
}
Per quanto invece riguarda la terminazione, la sospensione e la ripresa di uno specifico thread ci sono le apposite API, TerminateThread, SuspendThread, ResumeThread.