[C/C++]killer un thread !

killer un thread ! [C/C++] - C++ - Programmation

Marsh Posté le 23-04-2003 à 16:34:31    

Salut a tous !
voila je voudrais savoir comment on kill un thread de force !
voila mon source
 
 #include <stdio.h>
  #include <windows.h>
 
  DWORD WINAPI rien(LPVOID lpParameter)
  {
   
   int sec = 0;
     while (1)
     {
        Sleep(1000);
        sec++;
        printf("%d secondes\n",sec);
    }
     return 1;
  }
   
  int main(void)
  {
     
   char car[6];
   DWORD dw;  
CreateThread(NULL, 0, rien, NULL, NULL, &dw);
do {
scanf("%s",car);
printf("\n%s\n",car);
if (!strcmp (car,"toto" )) printf("\nn fds \n\n" );
if (!strcmp (car,"tt" )) {
printf("fermeture du theard" );
ExitThread(dw);
 
}  
} while (1);
}
 
le ExitThread(dw); ne ferme pas le thread je voudrais que kand l'utilisateur appuis sur tt ca arrete de compter !
 
merci

Reply

Marsh Posté le 23-04-2003 à 16:34:31   

Reply

Marsh Posté le 23-04-2003 à 16:42:41    

Normal, ExitThread est appelé par le thread lui meme, qui "s'auto termine".
Utilise TerminateThread.
http://msdn.microsoft.com/library/ [...] ctions.asp


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 23-04-2003 à 16:45:12    

C'est pas tout a fait ca...
le ExitThread() s'appelle pour exiter le thread ACTUEL. donc si tu l'appelles dans le main, bah ton prog s'arretera ptet.
 
Dans ton cas faut appeler TerminateThread() avec comme parametre le retour de CreateThread() (de type HANDLE)
 
pas assez de lecture de msdn tout ca...

Reply

Marsh Posté le 23-04-2003 à 17:22:47    

ok merci

Reply

Marsh Posté le 23-04-2003 à 19:20:29    

Dans MSDN ils disent clairement que TerminateThread est à eviter.
 
Le mieux est de positionner un évenement pour demander au thread de se terminer.


Message édité par verdoux le 23-04-2003 à 19:20:50
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed