begin process at 2010 02 10 12:06:59
  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 avec la fonction srand() [ par crawhawks21 ] Bonjour à vous les pros de la programmation, je me permet de venir vous trouvez car je ne trouve pas la solution à mon problème, je vous l'expose: je problème de conversion (fonction DrawLine) [ par nicolasmaicheul ] Salut à tous,Je travaille en CLI/C++ et j'ai un petit problème à la compilation:(code allégé)je fais appel à cette fonction:pvDoc->DessineLigne(pointD problème de fonction de tirage aléatoire en poker [ par moonlight2509 ] Salut, étant en débutant en langage c mon problème paraît peut-être très bête!! Voilà j'ai un problème d'argument ou de type de fonction dans la fonct Problème de boucle for [ par blue01 ] Bonjour tout le monde,    je fais actuellement un programme pour résoudre et générer des sudoku pour me faire la main.Mon compilateur compile en c++ ( Problème bibliothèque include [ par Selenore ] Bonjour à tous, j'ai vu sur le forum (et les codes surtout) des fragments, faisant mension d'une bibloithèque "windows.h" dans laquelle se trouvait la problème passage de paramètres d'une structure dans une fonction [ par sakthivel ] Bonjour,J'aimerai bien faire une fonction qui me permettrai d'afficher un plateau de jeu(jeu des 4 chevaux) car le code de l'affichage du plateau de j Problème avec OnKillFocus [ par rachid1245 ] Bonjour à tous,voilà j'ai une fenêtre de dialogue avec plusieurs edits  numérique avec la propriété Tabstopdans la fonction OnChar je selectionne les Fonction Thread [ par morino1003 ] salut tout le monde.je veux faire une connexion entre host(mon pc) et un automate(Integra cobra 400).la connexion se fait par une liaison (demande/rep Envoi de parametre dans un thread en C++ [ par xinob ] Bonjour a tous,Je me permets de poster un message car je n'ai pas trouver de réponse que j'ai comprise sur le net .En effet , j ai quelques questions


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

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 : 0,562 sec (3)

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