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

Windows Discussion :

Echange processus A <-> threads B


Sujet :

Windows

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut Echange processus A <-> threads B
    Bonjour,

    J'utilise actuellement une API multithreads de rendu 3D, qui existe en version Linux et Windows.

    Le moteur de rendu calcule l'image par morceaux, qu'on appelle "tuiles".

    Mon application utilisant cet API tourne dans son propre processus, et appelle la DLL de ce moteur de rendu, qui a également son processus. Lors d'une demande de rendu, le moteur de rendu crée n threads, et chacun renvoie la "tuile" calculée au processus appelant (mon appli). Sauf que mon appli ne les reçoit jamais...

    Ce comportement malheureux n'a lieu que sous Windows; ça fonctionne très bien sous Linux.

    La question est donc la suivante : dans un environnement Windows, un processus A peut-il dialoguer avec les threads d'un processus B ?

    Merci !

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Il y a tout plein de méthodes de communication inter-processus sous Windows.
    Par contre, on ne sait pas quelle(s) est(sont) la(les) méthode(s) de communication employée(s) par ton moteur de rendu...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Voici la ligne de création de thread :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       handle = (HANDLE)_beginthreadex(NULL, 0,
         (unsigned int (__stdcall *)(AtVoid *))fn,
          data,
          CREATE_SUSPENDED,
          &thread_ID );
    fn est la fonction qui doit recevoir le résultat du calcul.
    Je ne pense pas que le reste soit important pour vous.

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par défaut
    Je n'ai pas demandé la façon dont était créé le thread (par contre, il est créé dans quel processus et par quoi?).

    De plus, mettre un cast de pointeur de fonction comme ça, c'est vraiment, vraiment crade.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre Expert Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    De plus, mettre un cast de pointeur de fonction comme ça, c'est vraiment, vraiment crade.
    ++1 (et ça sent les problèmes)

  6. #6
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    En plus, ton thread, il est créé dans l'état "suspendu". J'espère que quelqu'un ailleurs pense à le reveiller.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Citation Envoyé par Médinoc Voir le message
    Je n'ai pas demandé la façon dont était créé le thread (par contre, il est créé dans quel processus et par quoi?).
    Le processus A demande au processus B : "Lance moi un rendu en utilisant n threads."
    Le pocessus B crée alors ses threads en bouclant sur le nombre de threads demandé.
    Chaque thread se voit alors affecté une tuile à calculer, et le thread renvoit (ou plutôt essaye...) cette tuile vers le processus B. Mais la communication ne se fait pas, manifestement.

    Citation Envoyé par Médinoc Voir le message
    De plus, mettre un cast de pointeur de fonction comme ça, c'est vraiment, vraiment crade.
    Ca m'avait également paru bizarre qu'il fasse ça. Mais bon, je n'ai pas trop la main sur le code...

Discussions similaires

  1. Echange de messages entre 2 threads
    Par VinceCBA dans le forum Concurrence et multi-thread
    Réponses: 3
    Dernier message: 20/08/2012, 15h18
  2. [VB.Net][Threading] Communication entre processus
    Par DonF dans le forum Windows Forms
    Réponses: 2
    Dernier message: 21/02/2006, 15h15
  3. Id de thread (processus léger)
    Par Ipoupaille dans le forum Threads & Processus
    Réponses: 3
    Dernier message: 08/01/2006, 12h14
  4. [Thread]Problème de processus
    Par berg dans le forum Concurrence et multi-thread
    Réponses: 5
    Dernier message: 18/06/2005, 20h40
  5. [SIGNAL] threads et processus
    Par beLz dans le forum POSIX
    Réponses: 14
    Dernier message: 21/12/2004, 01h28

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