Salut, j�ai d�j� post� sur le forum au moment o� je cherchais � me former sur la progra multithread. J�ai pass� en revue sur developpez.net avec tous ceux qui m�ont fil� un coup de main (merci encore !) , les frameworks Boost, TBB et OMP. J�ai d�cid� de retenir TBB comme solution finale pour des questions de facilit� d�int�gration.
Au stade du � redesign � mon source, je m�aper�ois que je ne suis pas � l�aise avec la notion de � donn�e partag�e � qui est peut-�tre � l�origine de mes plantages r�p�t�s�. L�id�e est la suivante : j�avais au d�part la construction d�un objet qui dispose d�une m�thode next(), laquelle m�thode permet � l�occasion di�t�rations, de g�n�rer une suite de valeur. C�et donc cette boucle que j�ai choisi de parall�liser, connaissant d�s le d�part mon nombre total d�it�rations, au moyen d�un parallel_for
Ce que j�observe :, des plantages interviennent dans l�ex�cution de mon parallel_for, je n�arrive jamais � sortir de la boucle plac�e dans la m�thode
Void operator()
De ma classe (alors que l�id�e c�est de pouvoir r�cup�rer en fin de traitement, toues mes valeurs dans un tableau).
Ce que j�ai remarqu� : c�est que je suis en mesure de tracer l�index de parcours du blocked_range pass� en param�tre � la fonction, et que le plantage n�intervient jamais pour le m�me index.
Qqs questions �conceptuelles�: dans quel cas je peux �tre certain que j�ai pr�cis�ment affaire � des donn�es partag�es lors de l�ex�cution de ma boucle?
Dans la mesure o� mon ex�cution ne semble jamais �tre stopp�e au m�me endroit, est-ce que je consid�re que c�est mes threads qui arrivent n�importe quand/comment sur la ligne de calcul ?
Comment je mets en place avec TBB une synchronisation des threads pour la zone pour laquelle j�ai un doute (avec Boost j�avais vu que l�on mettait des mutex, avec TBB je trouve rien)?c�est quoi la r�gle pour placer les points de synchronisation au(x) bon(s) endroit (s) ?
Merci si vous avez des �l�ments pour me faire comprendre.
Partager