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

Multithreading Discussion :

[QThread] QProcess et QSemaphore


Sujet :

Multithreading

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Par défaut [QThread] QProcess et QSemaphore
    Bonjour,
    Je développe actuellement une application multi-process, mais ces processus ne partagent pas tous des ressources, 2 processus écrivent tous les deux sur la sortie standart, et 2 autres accèdent à la base de données.
    Par exemple mon application principale permet d'afficher des pdf, d'éxécuter un dump de la base...
    Ma question est suis-je obligé de mettre en place un système de sémaphore pour tous mes QProcess, ou est-ce que je ne dois les utiliser que pour les 2 processus fils qui ecrivent sur la sortie standart. Voire est-ce qu'un simple système(un booléen) qui empêcherait à un de ces 2 processus de s'exécuter pendant que l'autre fonctionne n'est pas suffisant.
    Merci

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Va falloir mettre en place un tel système pour les process qui en ont besoin, mais QSemaphore n'est pas ce qu'il te faut. En effet, les sémaphores et autres mutex, c'est normalement pour le sthreads et non les processus.

  3. #3
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par slymira Voir le message
    Bonjour,
    Je développe actuellement une application multi-process
    Ne confonds-tu pas multi-process et multi-thread? Combien d'exe as-tu? Utilises-tu QThread?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Par défaut
    Non je ne confonds pas, mon application est bien multi-process et j'utilise bien QProcess.
    Elle est composée d'un exe principal, plus 3 autres qui sont sensés fonctionner en permanence.
    Chacun de ces processus peuvent executer plusieurs autres petits "outils" tel que le lancement de pdf, d'un dump de la base et d'autres exe qui communiquent par la sortie standart.
    Il faudrait que les processus qui communiquent par la sortie standart ne soient pas perturbés par d'autres process en cours, donc ma question était est-ce que je dois pour cela mettre en place un système de sémaphore.
    Et si oui est-ce que je dois gérer uniquement les processus qui communiquent par la sortie standart ou également tous les autres "petits outils".
    Merci

  5. #5
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Les processus qui partagent une rssource soivent être protégés, c'est tout

  6. #6
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par slymira Voir le message
    Il faudrait que les processus qui communiquent par la sortie standart ne soient pas perturbés par d'autres process en cours
    Quel genre de perturbation?


    Citation Envoyé par slymira Voir le message
    ma question était est-ce que je dois pour cela mettre en place un système de sémaphore.
    Et si oui est-ce que je dois gérer uniquement les processus qui communiquent par la sortie standart ou également tous les autres "petits outils".
    Les sémaphores, tels qu'ils sont implémentés par Qt, ne semblent pas partageables entre plusieurs process. Et puis un semaphore tout seul, hum, faudrait préciser tes besoins (scénario).
    Fait des recherches du coté de l'IPC. Qt propose D-BUS, mais je ne sais pas trop ce que ca vaut sous Windows.

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    37
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 37
    Par défaut
    En fait je travaille sur une application existante sur laquelle je peux difficilement modifier l'architecture.
    Actuellement l'application dispose d'un code de calcul fortran, qui est interfacé en C.
    Mon application et le code de calcul communique via la sortie standart avec la lecture et l'ecriture de paramètre au cours du calcul. La fonction canReadLineStdout() de QProcess est utilisée.
    Seulement de temps en temps il semble que l'on perd des informations. Comme il existe 3 codes de calculs différents(3 exécutables donc) j'étudie la possibilité d'interférence entre ces 3 codes de calculs voire je me demandais si d'autres processus en cours d'exécution ne pouvait pas aussi être responsable de ces problèmes.
    Merci

  8. #8
    Expert confirmé

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par défaut
    Hum... Je ne crois pas que les exe lancés par QProcess partagent les memes flux standards. Normalement chaque process a son propre flux d'entrée/sortie. L'erreur doit venir d'ailleurs
    Comment lis-tu la sortie d'un process lancé?

Discussions similaires

  1. [PySide] QProcess ou QThread pour ce cas ?
    Par Einenlum dans le forum PyQt
    Réponses: 10
    Dernier message: 30/05/2014, 15h20
  2. [QThread] ne marche pas
    Par alpha_one_x86 dans le forum Multithreading
    Réponses: 11
    Dernier message: 23/11/2007, 09h13
  3. [Thread] QThread et QSocket
    Par G3G3 dans le forum Multithreading
    Réponses: 7
    Dernier message: 30/10/2007, 20h25
  4. Réponses: 8
    Dernier message: 21/12/2006, 21h03

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