begin process at 2012 05 30 13:50:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Autre

 > 

Threads et leurs paramètres


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

Threads et leurs paramètres

vendredi 30 mars 2007 à 16:20:55 | Threads et leurs paramètres

Chop_chop

Bonjour, j'ai un problème quant à un programme avec création de threads que je réalise.
Je vous explique ce que je code et qui ne fonctionne pas :

J'ai ma fonction principale, dans laquelle je créé plusieurs threads de la facon suivante :

for(i=0;i<nbvoiesPID;i++)
            {
            hThread [i] = CreateThread(NULL,NULL,Thread_SBA,(void *) &voiePID[i], NULL, &ThreadId);
            printf(" ID du thread %i : %i\n",i,ThreadId);
            }

"voiePID" correspond à une structure que j'ai déclaré afin de passer plusieurs paramètres.
Bon, le lancements des threads fonctionne bien.

Ma fonction principale continue a s'executer (les threads egalement car bouclés en while(1){...}) et j'appelle , à la suite dans cette fonction principale une autre fonction dans laquelle je fais passer en argument ma meme structure  voiePID[i] :

 fonction2(...,voiePID);

Ma fonction2,dans son fonctionnement , modifie une variable globale , qui par sa modification, provoque un changement d'une valeur int de la structure voiePID[] dans l'un des threads.(j'imagine que j'en ai perdu la moitier avec cette phrase...)

Ma fonction2 accede alors à la valeur int de la structure voiePID[] qui a été modifié dans le thread mais aucun changement n'est constaté pour cette valeur dans fonction2 ???

comment faire pour que la modif dans un thread soit notifiée dans la fonction2 ? Merci
      


vendredi 30 mars 2007 à 17:20:39 | Re : Threads et leurs paramètres

24Karas

Es-tu sûr que quand ta fonction 2 accède à la variable, le thread a eu le temps de modifier la valeur ? pt'etre un probleme de synchro quoi ...

++
vendredi 30 mars 2007 à 17:44:26 | Re : Threads et leurs paramètres

Chop_chop

oui, la fonction 2 y accède, parceque je voie les valeurs de toutes les variables de la structure (j'ai fait un printf de ces valeurs dans la fonction 2 pour en etre sur).

Pour la synchro, c'est ce que je me disais, mais meme en laissant tourné le programme, la valeur de la variable modifiée de la stucture dans fonction 2 ne s'actualise pas
samedi 31 mars 2007 à 13:27:54 | Re : Threads et leurs paramètres

mezaya

Réponse acceptée !
ta variable est peut être en cache donc le thread donc ta valeur ne sera pas mise a jour. Pour faire du multi-threading il faut utiliser un minimum de proctection. regarde les fonctions "interlocked", "critical section" et "mutex". va faire un tour par la : http://msdn2.microsoft.com/en-us/library/ms684122.aspx

Voili,Voilou [;)]
lundi 2 avril 2007 à 09:33:54 | Re : Threads et leurs paramètres

Chop_chop

Merci à tous les 2, je ne connaissais pas la notion de "interlocked" , ca a l'aire pas mal, je vais essayer de voir ce que je peux faire avec !
Merci, je vous tiens au courant !!!


Cette discussion est classée dans : fonction, thread, threads, fonction2, voiepid


Répondre à ce message

Sujets en rapport avec ce message

timer dans des threads [ par z3bul0n ] Comment faire pour gérer un SetTimer créé dans un thread sans utiliser de fonction : j'aimerai recevoir le WM_TIMER à chaque fois qu'il y en a un dans à propos des threads [ par GUERRIER_ABSOLU ] Salut, je voudrais savoir s'i quelqu'un a déjà essayé d'appeler une fonction dans un thread et a remarqué quelque chose d'innatendu. En fait quand j'a thread sur WndProc [ par kidpigeyre ] G une fonction WndProc chargé de réaliser tout mon programme (application GUI) (avec fenetre windows) et jmerai pouvoir faire un thread de cette fonct Thread & fonction [ par youpiyoyo ] j'aimerai savoir comment et par qu'elle fonction je peux à partir d'un thread lancé une fonction. éternel probleme souvent posé comme post dans le for Thread et socket udp [ par eurysthe ] Bonjour !!Voila j'ai un petit problème de thread qui me pourrit la vie.J'ai crée un thread qui doit écouter en boucle les informations qui transite su Comment utiliser SwitchToThread ?? [ par vinvay ] Losque je veux mettre un thread à la fin de la liste d'ordonnancement, il faut que j'utilise la fonction SwitchToThread() à l'intérieur du thread conc Accès aux objets MFC à partir de threads non-MFC (gros bras demandé) [ par Hell Dom ] Bonsoir,Mon problème vient du fait que je ne sais pas comment le faire proprement.Donc en gros, j'ai une boite de dialogue qui lance un thread, ce der thread sous visual c++ 6.0 [ par darksoul07 ] J'aimerai savoir comment je doi déclarer ma fonction thread, et si je doi déclarer quelque chose pour partager des variables ou une fonction ?^^^^^§^^ Threads HELP ME PLEASE [ par loicus ] heu, j'aimerais pouvoir utiliser les threads dans mon programme afin de pouvoir lancer plusieur fonction en parallele..., Mais je n'y comprend rien... Help (threads) [ par loicus ] Bon, bhen voila.. j'essaye de faire un threadj'aimerais ouvrir la fonctions LCD_BootScreen() dans un thread, donc j'utilise cette fonction :thboot= Cr


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
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,312 sec (3)

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