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

C# Discussion :

Problème lors de lancement de process en multithread


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 102
    Par défaut Problème lors de lancement de process en multithread
    Bonjour à tous,

    voici mon soucis :

    Je lance en même temps (à la millisecondes prêt) deux fois le même executable en variant des paramètres d'entrées du process dans deux threads différents . Même si un thread fini de travailler avant l'autre, il attendra que l'autre soit terminé avant de lancer le prochaine executable.
    Je vous avouerai que je reste très perplexe ??!!

    Il y a un mutex positionné sur une méthode qui permet de gérer la concurrence d'accès à un fichier en écriture car les deux process peuvent ecrire sur un même fichier. J'ai vérifié , celui ci est bien libérer à la fin de la méthode à l'intérieur d'un "finally".

    Est ce qqun aurait une idée qui exliquerait cette attente entre les threads alors qu'ils sont censé travaillé chacun de leur coté??
    Le fait qu'il soit lancé au même instant ( à la millisecondes prêt) n'influe t'il pas directement sur la gestion du multithread de l'OS ???

    merci d'avance pour votre aide

  2. #2
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Peux-tu nous montrer le code du lancement des process par tes threads ?

    (et puis je doute que l'OS ai du mal à gérer 2 threads )

  3. #3
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 102
    Par défaut
    et puis je doute que l'OS ai du mal à gérer 2 threads
    lol je suis bien d'accord avec toi mais je ne vois tellement pas d'ou ca vient que je me mets à me pauser des questions mystics.


    Je ne peux pas te donner le code exact de mémoire mais voici le principe:

    Sur mon serveur, je possède un fichier .cmd qui lui contient ni plus ni moins que la commande dos qui permet d'appeler l'executable en ligne de commande.

    C'est ce fichier qui est appelé dans mes deux threads via un objet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Process p = new Process()
    depuis le code .Net avec des arguments différents liés au process pour chaque appelle.

    A chaque appelle au fichier CMD et pour chaque threads je fais bien un pour le process.

    Lors que je regarde ma liste des taches, j'ai bien deux fois mon process "xxxxx.exe" et lorsque le premier se termine je n'en ai plus qu'un. Jusqu'ici rien d'anormal .

    Ce qui est étrange c'est que le thread qui vient de terminer l'exécution du process, devrait en lancer un autre: "yyyyyy.exe".
    Il ne le fait que lorsque que le second thread à terminer l'execution de son process "xxxxx.exe".

    Donc du coup au lieu d'avoir dans ma liste des taches en même temps :
    -"xxxxx.exe"
    -"yyyyyy.exe"

    je les ai les uns à la suite des autres.

    je ne sais pas si je suis très clair

  4. #4
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Si tu rajoutes un MessageBox.Show pile au moment où un des process s'arrête (directement après le p.WaitMachin, sans try ni finaly ni rien entre les deux), ça te donnes quoi ?

  5. #5
    Membre confirmé
    Inscrit en
    Août 2005
    Messages
    102
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 102
    Par défaut
    Je te dirai ca demain matin , mais je t'avouerai que je ne vois pas trop ou tu veux en venir ??
    Le message va forcément s'afficher sauf s'il ya une exception à la sortie du process nan ?

    merci pour ton aide en tout cas.

  6. #6
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Bah en fait si à chaque fois ton thread c'est Process.Start et Process.WaitForExit, normalement cela devrais marcher et peut être que le blocage survient plus loin dans ton code, mais toujours dans le thread (vu que j'ai pas le code, j'émet des suppositions, il faudrait voir le code qui démarre le Process et attend la fin de son exécution).
    Par contre si avec des MessageBox ou alors via le debug tu constates qu'effectivement le premier Process.WaitForExit ne se termine pas tant que le deuxième Process ne s'est pas terminé, ça devient différent car l'incohérence viendrait de la classe Process et là ... il faudrait improviser.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. problème lors de lancement d'une servlet dans le navigateur
    Par Cirtadz dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 22/01/2009, 15h09
  2. problème lors du lancement d'Eclipse!
    Par JauB dans le forum Eclipse
    Réponses: 3
    Dernier message: 20/11/2008, 23h00
  3. [DW2] Problème lors du lancement de Dreamweaver 2
    Par angefatal dans le forum Dreamweaver
    Réponses: 4
    Dernier message: 31/01/2008, 10h08
  4. Problème lors du lancement de deux applications Interbase
    Par Morfus dans le forum Bases de données
    Réponses: 8
    Dernier message: 25/10/2007, 19h48
  5. Problème lors du lancement sur une autre machine
    Par poussinphp dans le forum Visual C++
    Réponses: 4
    Dernier message: 01/05/2007, 13h25

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