Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
4699 connectés 

  FORUM HardWare.fr
  Programmation

  [C++] Exemple ExitThread()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] Exemple ExitThread()

n°60290
antsite
Je me souviens
Posté le 19-09-2001 à 13:51:44  profilanswer
 

Voici mon code, il compile mais il plante à l'appel de ExitThread();
 
HANDLE th;
DWORD x;
 
Une fonction
{
 th = CreateThread(NULL,0,srv,this,0,&x);
}
 
Une autre fonction
{
 DWORD ec;
 GetExitCodeThread(th,&ec);
 ExitThread(ec); //crash
}
 
Le thread en question :
DWORD WINAPI srv(void* pDialog)
{
 while(true)
  //du code
 return 0;
}
 
Je tiens ABSOLUMENT à utiliser ExitThread() et non une simple variable dans le while() qui terminerait le thread.
Donc, qu'est-ce qui ne va pas dans mon thread ?

mood
Publicité
Posté le 19-09-2001 à 13:51:44  profilanswer
 

n°60302
seblamb
Posté le 19-09-2001 à 14:33:51  profilanswer
 

ExitThread(th);  
GetExitCodeThread(th,&ec);  
 
Déja si tu fais ça je pense que ça marchera mieux

n°60325
BENB
100% Lux.
Posté le 19-09-2001 à 15:10:47  profilanswer
 

Il ne faut jamais utiliser de methodes telles que ExitThread..
 
A propos es-tu sur d'avoir des cancelation point dans le code de ton thread ?  
Es-tu sur que le plantage viens bien du multi-threading
 
Ne te manque-t-il pas des mutex d'ou mutilation de donnes...

n°60362
antsite
Je me souviens
Posté le 19-09-2001 à 15:56:10  profilanswer
 

Mon thread c un thread normal : une boucle infinie while()
le problème vient bien de ce thread qui se quitte mal

n°60363
antsite
Je me souviens
Posté le 19-09-2001 à 15:56:32  profilanswer
 

c quoi un mutex

n°60407
BENB
100% Lux.
Posté le 19-09-2001 à 17:16:21  profilanswer
 

Les mutex se sont des mecanismes qui permettent de partager des donnes entre threads, par exemple si tu as une file, tu doit la proteger par un mutex (mutual exclusion) pour eviter que deux threads viennent ajouter un element en meme temps. Une seule Thread a le mutex, pour l'avoir les autres attendent.
 
donc prendre le mutex
ajouter un element dans la file
relacher le mutex.
 
sans le mutex tu risque de te trouver avec deux thread mettant un element au meme indice...
 
ce qui peut provoquer des plantages...
En general on suppose que l'ecriture d'une variable (bool, int, etc) est atomique, et que donc il n'est pas necessaire des les proteger par un mutex, evidement ce n'est pas le cas des chaines de caracteres... des objets etc...
 
Plus ta machine a de processeur plus il y a des chances que tu ais des problemes et sur des machines a 16 procs on a tendence a mettre suffisement de mutex.
 
le probleme des mutexes ce sont les dead-locks
 
imagine deux thread A et B  
A prend le mutex1
B prends le mutex2
A tente de prendre le mutex2 et donc attends que B le rende pour continuer
B tente de prendre le mutex1 et donc attends que B le rende pour continuer....
DEADLOCK.
 
Verifie que les donnes que tu partages entre tes threads ne risquent rien. Chaque fois que tu te dis, non l'autre thread ne peu pas... reprend toi, et dis toi toujours que si ca peu mal se passer, ca se passera mal apres les tests (chez l'utilisateur final)...

n°60413
bjone
Insert booze to continue
Posté le 19-09-2001 à 17:33:09  profilanswer
 

ou sémaphore...


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [C++] Exemple ExitThread()

 

Sujets relatifs
[Visual C++] Exemple de la fonciton WaitForSingleObject()[C++] CreateThread(); -> Exemple
[C++] Prenons une forme simple... un cercle par exemple :)Besoin d'exemple pour PHP3 et mysql.
CFile Exemple ?ASP : pouvez me donner un exemple pour la commande UPDATE ???
Plus de sujets relatifs à : [C++] Exemple ExitThread()


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)