Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Problème de boucle dans un muli-thread [ Archives / Au secours ] (vinvay)

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é 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 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 Problème avec DJGPP [ par platon179 ] Bonjour tout le monde, j'ai un gros problème avec le compilateur DJGPP. Existe-t-il une fonction qui permet de charger du code compilé en mémoire, de Problème de code en c++ (fonction itoa) [ par mimyne ] voila g le code suivant:void Resultat_Clicked(Object* pSender, EventArgs* pArgs){ int operation = 5; char* chaine[2]; if (pSender == Btnres) { { ito


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.