vinvay
Messages postés36Date d'inscriptionmardi 7 mai 2002StatutMembreDernière intervention31 janvier 2007
-
3 mars 2004 à 15:33
cs_alain34270
Messages postés85Date d'inscriptionmardi 11 février 2003StatutMembreDernière intervention18 septembre 2005
-
4 mars 2004 à 18:14
Alors voila, j'ai 4 threads qui tournent en même temps, ceux-ci utilisant la même fonction.
Dans cette fonction, il y a une première boucle for suivie par deux boucles for imbriquées.
Mon problème est que dans la première boucle, les valeurs de l'indice ne se suivent pas alors qu'elles le devraient. D'où vient ce problème ?? Et comment le résoudre ??
vinvay
Messages postés36Date d'inscriptionmardi 7 mai 2002StatutMembreDernière intervention31 janvier 2007 4 mars 2004 à 09:37
Non elle ne l'est pas. Elle est déclarée dans le for : for(static int indice=0; indice<...
Donc elle ne devrait pas changer de valeur comme elle le fait.
vinvay
Messages postés36Date d'inscriptionmardi 7 mai 2002StatutMembreDernière intervention31 janvier 2007 4 mars 2004 à 13:49
Le voilà :
DWORD drw_acq(LPDWORD args)
{
int ret;
int rng = ((int)args)>>16;
int brn = ((int)args) & 0xFFFF;
static int node;
int drw;
static int chan;
Ring *ring=ringtest;
cs_alain34270
Messages postés85Date d'inscriptionmardi 11 février 2003StatutMembreDernière intervention18 septembre 2005 4 mars 2004 à 15:53
Excuses moi, je n'avais pas fait attention au static dans ta première réponse.
Une variable statique est définie au début du programme, et existe pendant toute son exécution. C'est donc le même espace mémoire qui est utilisé par tous les thread. Tu dois avoir le problème avec chan et node.
Ne déclare pas ces variables en static, et les variables seront différentes dans chaque thread.
cs_alain34270
Messages postés85Date d'inscriptionmardi 11 février 2003StatutMembreDernière intervention18 septembre 2005 4 mars 2004 à 18:13
Dans ce cas, je ne vois pas - désolé...
Peut-être est-ce que la fonction principale du thread est statique ? essaie de mettre des boucles dans une autre fonction, appelée par la fonction principale ? (mais je te dis ça tout à fait au hasard !)