Ciao a tutti,
sto sviluppando una piccola applicazione in C, avendo bisogno di una riga di comando ho deciso di implementare un nuovo thread che esegua questo compito, documentandomi su MSDN ho trovato la funzione _beginthread che utilizzo in questo modo :

_beginthread( user_interface,0,NULL );

la mia funzione che gestisce la console si chiama ovviamente user_interface.

Il programma funziona benissimo, per interagire con il programma principale ho deciso di utilizzare una variabile esterna da 16 bit (unsigned short) con vari Flags, anche questo sistema funziona correttamente.

Il problema arriva alla chiusura del programma : quando main finisce il suo lavoro setta prima un flag nella variabile esterna poi esce con un return, la funzione user_interface e' invece racchiusa in un while, ed esegue il suo lavoro solo se quel flag e' 0... infatti appena main finisce il suo lavoro e setta ad 1 quel flag anche la user_interface esce dal while e va a cadere nell' istruzione _endthread(); ... il problema e' che il programma resta aperto con il cursore lampeggiante in console , mi sfugge qualcosa ?


void user_interface() {
extern int command_flags;
while( command_flags & 1 == 0 ){

... cutted code ...

}
_endthread();
}




Grazie delle eventuali risposte