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

VB.NET Discussion :

Probleme multi threading


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Bonjour à tous,

    Toujours sur mon projet de supervision de cycle de mesure de pièce pour ceux qui ont vu mon précédent post..

    Il y a quelque chose que je ne comprend toujours pas. Je lance des threads pour analyser mes pieces de cette manière:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim t As New Thread(Sub() AnalysePiece(piece))
    t.IsBackGround = True
    t.Start()
    Cependant j'ai l'impression que la méthode AnalysePiece ralentit quand même le thread principal. Pourtant je pensais que cela s’exécutait en dehors de celui ci..
    Si j'omets ces quelques lignes mon programme lit les entrées, ajoute les pièces détectées et écrit les sorties comme il faut donc je pense que quelque chose m'échappe dans la notion de multithreading..

    Je voudrais juste lancer un timer qui va analyser ma pièce toute les x millisecondes mais sur un autre thread que le principal, pour ne pas le gêner dans son taf perso..

    Cela fait des jours que je me bats avec ça et là j'en peux plus

    Si quelqu'un a des lumières a m'apporter..

    Merci d'avance

    PS: avant j'utilisais un Threading.Timer comme on me la conseillé mais j'avais le même problème..

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2010
    Messages
    793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Mayenne (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2010
    Messages : 793
    Par défaut
    Bonjour,

    combien de threads lances-tu de manière simultanée ?
    Puisque si tu en lances trop au bout d'un moment forcément le processeur alternera entre thread principal, et threads secondaires

  3. #3
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Au bout de 2 pièces à analyser je remarque que cela ne marche déjà plus comme il faut.. En fait j'ai réessayé cette méthode par désespoir de cause car malgrès tout mes essais, je ne voyais pas le résultat attendu..

    Jusqu'à hier j'avais un threading.timer par pièce (et donc un seul thread par piece?) qui exécutait cette méthode jusqu'à son éjection. Mais j'avais le même problème..

    Je ne sais plus quoi essayer..

  4. #4
    Membre expérimenté
    Homme Profil pro
    Inscrit en
    Février 2003
    Messages
    2 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2003
    Messages : 2 193
    Par défaut
    Le timer lance un nouveau Thread aussi.

    Sinon la logique des Threads c'est de dire à mon processeur:
    J'ai une tache A et une tache B fait les tournée en même temps
    donc le processeur va faire un peu de A puis un peu de B puis retourner sur A

    donc des que tu fais tu threadings tu ralenti un peu A
    mais vu que A s'active tout les X temps tu as l'impression qu'il n'est jamais bloquée


    Que fait AnalysePiece? Acces à des resources? bd,fichier,reseau,port?

  5. #5
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Salut BenoitM,
    Citation Envoyé par BenoitM Voir le message
    Que fait AnalysePiece? Acces à des resources? bd,fichier,reseau,port?
    Rien de tout ça. En fait ça calcule l'emplacement de la pièce sur le plateau tournant et lance les mesures nécessaires en fonction de cette position (pour l'instant aucune..).

    PS: Je suis revenu au Threading.Timer par piece (nait à la detection, meurt à l'ejection), la solution la moins abérante que j'ai pu essayer..

  6. #6
    Membre expérimenté Avatar de AcidLines
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2010
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Février 2010
    Messages : 198
    Par défaut
    Bonjour,

    Si jamais tu utilises le Framework 4, tu as une librairie intéressante sur le multi task. Au besoin voici le cours de Webman :

    http://webman.developpez.com/article...tionparallele/

    Est ce que par hasard, tes différents Threads n'accèderait pas tout deux à des variables globales ? Peut être en conflit sur les accès mémoire (ça m'étonnerait mais bon..) ?

  7. #7
    Membre émérite Avatar de -N4w4k-
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2011
    Messages
    545
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2011
    Messages : 545
    Par défaut
    Salut,
    Citation Envoyé par AcidLines Voir le message
    Est ce que par hasard, tes différents Threads n'accèderait pas tout deux à des variables globales ?
    Euh oui j'ai des objets "Poste" (qui représentent les différents postes..) qui sont utilisés à chaque analyse de pièce. Par exemple pour savoir si la pièce est arrivée au niveau du poste, si le poste est occupé, lancer l'analyse, etc.
    Ce sont les mêmes objets pour toutes les pièces (passés en paramètres lors de la création de la pièce). Ça peut jouer??

Discussions similaires

  1. probleme OpenMP multi-threading
    Par toetoe dans le forum Programmation système
    Réponses: 1
    Dernier message: 29/12/2012, 14h39
  2. Multi Thread - probleme release
    Par CSharpN dans le forum C#
    Réponses: 2
    Dernier message: 21/12/2012, 12h20
  3. probleme avec [#document: null] et multi-thread
    Par zouuc dans le forum Débuter avec Java
    Réponses: 4
    Dernier message: 05/02/2009, 09h43
  4. Probleme serveur multi-thread - Eclipse
    Par SpIrIt505050 dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 31/05/2008, 12h50
  5. [Multi-threading] Probleme avec les mutex
    Par homeostasie dans le forum Visual C++
    Réponses: 2
    Dernier message: 07/03/2007, 10h00

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