IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Programmer en multi-Thread


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 50
    Par défaut Programmer en multi-Thread
    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 @+

  2. #2
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 870
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 870
    Par défaut
    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+

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut
    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é.

  4. #4
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 50
    Par défaut
    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 @+

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Par défaut
    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.

  6. #6
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    ç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)

  7. #7
    Membre averti
    Inscrit en
    Janvier 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 50
    Par défaut
    Citation Envoyé par Djobird Voir le message
    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.
    Normalement, les fourmis ne communiquent pas entre elles!!!
    Donc je travaille sur une suele fourmi à la fois, je définis les fonctions relatives à son comportement et ensuit je lenace le hread c'est ca????
    Merci d'avance

  8. #8
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 870
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 870
    Par défaut
    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+

Discussions similaires

  1. Programmation Multi Threads
    Par StephaneP dans le forum Langage
    Réponses: 16
    Dernier message: 11/02/2009, 07h59
  2. [BP7] Multi-cpu, multi-core, multi-thread et programme Pascal
    Par Transgarp dans le forum Turbo Pascal
    Réponses: 6
    Dernier message: 07/04/2008, 18h43
  3. Réponses: 3
    Dernier message: 25/04/2007, 13h21
  4. Programmation Multi-threadée et Synchronisme
    Par ChPortos dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/04/2007, 11h59
  5. Réponses: 11
    Dernier message: 14/02/2006, 00h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo