Slt,
Comment implémenter un algorithme en thread.
Est ce que je fixe les fonctions et après je pense au thread ou bien comment
Je me pert et j'ai besoin de votre aide la ,S.V.P.
Merci d'avance
et @+
Slt,
Comment implémenter un algorithme en thread.
Est ce que je fixe les fonctions et après je pense au thread ou bien comment
Je me pert et j'ai besoin de votre aide la ,S.V.P.
Merci d'avance
et @+
Salut,
Un système de multi thread n'est utile que si tu en as vraiment besoin.
Normalement, si ta conception objet est bien faite, l'exécution de tes threads devrait pouvoir s'implémenter _SANS_ toucher aux méthodes métiers.
Il faudrait plus d'informations sur ce que tu souhaites faire, et pourquoi tu dois utiliser des threads, pour trouver la meilleure solution.
A+
Alors je ne sais pas si j'ai bien compris ta question, mais je pense que tu veux faire du calcul parallèle ?
Quand tu programmes en multi threader, la seule préoccupation que tu dois avoir, et qui est l'une des plus compliqué en programmation c'est la synchronisation des threads.
Par exemple, tu veux faire le calcul suivant :
1) a = b + c
2) d = b + c
3) e = a + d
Pour multi threader ce calcul, tu vas regarder les dépendances de chaque opération.
Là tu vois que 1 et 2 sont totalement indépendant, donc tu peux faire chaque calcul dans un thread séparé. Mais comme 3 dépend du résultat de 1 et 2, il est impératif que les thread des deux premiers calculs aient terminé avant que le 3ème ne commence.
En gros la méthode, tu prends ton algo, tu regardes comment tu peux multi threader les plus gros bloc, en effectuant un diagramme de dépendence entre tout ces bloc, puis tu descend. Pour faire ton diagramme, tu regardes quels sont les variables en écriture et en lecture dans chacun, puis tu avises selon.
Maintenant, il faut faire attention, multi threader à fond une application n'est pas forcément plus performant, mais là ca devient déjà plus compliqué ^^
Ici l'exemple est simple, mais évidemment si tu veux faire des algorithmes un peu poussé, mettre en évidence les dépendances, et la synchronisation des threads devient plus compliqué. De plus dans ton étude, tu dois prendre en compte l'accès aux ressources partagé.
j'essaye d'implémenter un algorithme qui fait évoluer des fourmis(L'algorithme AntClass).
Je pensais que je dois m'intersser à une fourmis au début et puis faire appel à la méthode run pour faire évoluer plusieurs fourmis donc le thread , en même temps.
Est ce que mon raisonnement est juste ou nn????
Merci d'avance
et @+
Je dirais tout dépend ce que tu demandes à tes fourmis. Si elles ne communiquent pas directement entre elles (ce qui sauf erreur est le principe des algo de ce genre, non ?) tu dois pouvoir faire comme ca oui.
ça ressemble à un problème de "boïde" voir http://en.wikipedia.org/wiki/Boids
et c'est difficile à faire: chaque fourmi peut agir dans un Thread propre mais dès qu'elle doit prendre en compte le comportement de la fourmi d'à coté ça devient difficile (beaucoup de programmes contournent la difficulté
en découpant en tranches de temps dans laquelle on traite en fait l'ensemble des fourmis dans un seul Thread : j'aime pas trop mais ça marche)
En effet, si tes fourmis sont indépendantes et non communicantes, la meilleure solution est un thread; une fois lancé, ta fourmi vivra sa petite vie dans son coin !
Si par la suite tu dois quand même faire quelque chose de plus évolué, il faut créer un système de communication : une thread, à durée limitée, lors de la rencontre de deux fourmis est envisageable; Elle bloquera les fourmis selectionnées, une phase d'échange suivie d'une conclusion à destination des deux fourmis, puis fermeture de la thread de communication, pour permettre aux fourmis d'interpreter le nouveau message qu'elles viennent d'obtenir, en inhibant toute nouvelle interpretation de message de la même fourmi jusqu'à la prochaine rencontre...
A+
Partager