begin process at 2012 02 12 08:16:43
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Problème de boucle dans un muli-thread


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème de boucle dans un muli-thread

mercredi 3 mars 2004 à 15:33:33 | Problème de boucle dans un muli-thread

vinvay

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 ??
mercredi 3 mars 2004 à 21:08:25 | Re : Problème de boucle dans un muli-thread

alain34270


Est-ce que ce n'est pas parce que ta variable qui te sert d'indice dans la boucle "supérieure" serait déclarée en dehors de la fonction ?
a+
alain
jeudi 4 mars 2004 à 09:37:35 | Re : Problème de boucle dans un muli-thread

vinvay


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.
jeudi 4 mars 2004 à 11:12:34 | Re : Problème de boucle dans un muli-thread

alain34270

tu peux mettre le code de ta fonction, stp ?

alain
jeudi 4 mars 2004 à 13:49:59 | Re : Problème de boucle dans un muli-thread

vinvay

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;

while(true)
{
for(node=0; node<DRW_NB_DRAWER_BR; node++)
{
drw = (brn * DRW_NB_DRAWER_BR) + node;
ret = update_status(rng,drw);

if(!ring->drawer[drw].alrm.part.out_of_order)
{
if( (ring->drawer[drw].warn.part.restart)
||(ring->drawer[drw].info.serial_nb[DRW_CPU_CARD]== 0))
{
update_info(rng,drw);
}
}
}
for(chan=0; chan<DRW_NB_CHANNEL; chan++)
{
for(node=0; node<DRW_NB_DRAWER_BR; node++)
{
drw = (brn*DRW_NB_DRAWER_BR)+node;
if(!ring->drawer[drw].alrm.part.out_of_order)
{
ret = update_channel(rng,drw,chan);
}
}
}
}
}
jeudi 4 mars 2004 à 15:53:38 | Re : Problème de boucle dans un muli-thread

alain34270


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.

a+
alain
jeudi 4 mars 2004 à 17:32:59 | Re : Problème de boucle dans un muli-thread

vinvay

Au départ, elles n'étaient pas static. Je les aient mises ainsi en pensant que cela pourrai résoudre le problème, mais cela n'a pas été le cas !!
jeudi 4 mars 2004 à 18:13:11 | Re : Problème de boucle dans un muli-thread

alain34270

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 !)

a+
alain
jeudi 4 mars 2004 à 18:14:56 | Re : Problème de boucle dans un muli-thread

alain34270


suite (oubli !)

en déclarant les variables dans la fonction appelée par la principale, bien sûr !

alain


Cette discussion est classée dans : problème, fonction, boucle, thread, muli


Répondre à ce message

Sujets en rapport avec ce message

Problème avec un thread [ par Mini92 ] Bonsoir (ou bonjour),J'ai un ti soucis avec un thread, en fait, la fonction qui se trouve à l'intérieur ne s'exécute pas... Je comprend pas, pourtant Problème de retour de dll sous l’API32 [ par ArthurAuguste ] J’ai un .exe (une fenêtre) qui tourne donc avec quelque part une boucle : while( GetMessage( &message, NULL, 0, 0)) { TranslateMessage( &message ); arrêt imprévu de thread [ par mayssakh84 ] Bonjour, J'ai une fonction appelé dasn un thread qui fait appel à une fonction chargée à partir d'une dll. Mon problème c'est que parfois , le thread Decrement : en fonction d'une variable [ par marshallino16 ] Bonjour à tous, J'ai un souci très bête mais j'arrive pas à mettre le doigt sur une logique simple de boucle pour le résoudre. Je vous explique, j boucle sans arret [ par nassim1987 ] bonjour, j'ai un petit problème dans un code que j'écris en c, voila la partie où est situé le problème. for( i=0;i<Height+2;i++){ for( j=0 Threads, fonction et mutex ? [ par Adict ] bonjour à tout le monde [^^happy13] dans mon projet de créer un tchat il faut que j'applique sur le client un thread qui exécute une autre fonction q malloc induit une boucle infinie [ par macburn ] Bonjour tout le monde ! Pour mon premier message, j'aimerai mettre en évidence un problème assez étrange dont je ne parviens pas a m'extirper... J'a Problème Fonction de calcul d'un déplacement [ par baptchr55 ] Bonjour à tous... J'ai encore une fois besoin de votre aide : Je travail sur une machine CNC de type UPA. Aujourd'hui j'ai pu déterminer comment comm Problème création d'une fonction de Calcul d'un point [ par baptchr55 ] Je travail sur une machine CNC de type UPA. Aujourd'hui j'ai pu déterminer comment commander celle-ci à l'aide d'un petit programme en C. Je souhaite Problème avec GetOpenFileName enfin élucidé [ par ArthurAuguste ] Je viens enfin d'élucider ce problème qui au vu des messages de ce site a beaucoup été lu, mais sur lequel je n'ai pas beaucoup eu de réponse. Voici c


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,232 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales