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

MFC Discussion :

[Win32] Pipes nommés : lectures non bloquantes


Sujet :

MFC

  1. #1
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut [Win32] Pipes nommés : lectures non bloquantes
    Bonjour,
    j'utilise des pipes nommés pour faire communiquer deux processus.
    Mon problème est à la fermeture des pipes : dans chaque processus, un thread lit en permanence le pipe pour de nouvelles infos. Quand il n'y a rien d'écrit, il est donc bloqué.
    Comment le débloquer pour qu'il libère le pipe, afin de pouvoir le fermer ?
    Le moyen pour moi serait de rendre l'appel à la méthode ReadFile() non bloquant...

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    la fonction SetNamedPipeHandleState permet de specifier le mode bloquant ou non au niveau des pipes mais je pas sur que ça fonctionne correctement
    regarde sur la doc MDSN extrait:

    PIPE_NOWAIT Nonblocking mode is enabled. In this mode, ReadFile, WriteFile, and ConnectNamedPipe always return immediately. Note that nonblocking mode is supported for compatibility with Microsoft® LAN Manager version 2.0 and should not be used to achieve asynchronous input and output (I/O) with named pipes.
    la question dans ta communication tu peux pas codifier un message pour indiquer la fermeture au serveur et fermer le thread ?


  3. #3
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    Je vais essayer le NO_WAIT, on verra bien... Je ne peux pas utiliser les structures OVERLAPPED parce que mon logiciel doit être compatible avec Win95, eh oui, il y a encore des gens qui utilisent cette... chose

    Pour répondre à ta question, voila précisémment mon problème :
    deux processus A et B qui utilisent les MFC, possédant chacun un thread de lecture. Le thread de lecture fait des tentatives de lecture sur les pipes (deux pipes nommés) pour notifier le thread principal (handler de messages Windows) que des données ont été lues et sont disponibles à être exploitées.
    Le problème se pose lorsque l'utilisateur souhaite quitter l'application : le thread principal de l'appli pose un flag au thread lecteur pour lui dire de fermer les pipes et de s'arrêter. Ainsi, on est censé quitter proprement : les pipes sont fermés, les threads sont terminés.
    MAIS, le thread lecteur est bloqué sur l'opération de lecture, DONC il ne voit pas le flag, DONC on quitte comme un porc : les pipes ne sont pas fermé, le thread est toujours actif, la mémoire n'est pas désallouée....

  4. #4
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    youpi ! le NO WAIT fonctionne.

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

Discussions similaires

  1. Socket lecture non bloquante
    Par Darkthur dans le forum Multithreading
    Réponses: 2
    Dernier message: 22/05/2009, 18h28
  2. lecture non bloquante de clavier
    Par Bayard dans le forum Général Python
    Réponses: 4
    Dernier message: 10/08/2007, 21h27
  3. Lecture non bloquante sur plusieurs Sockets avec nio
    Par ratakses dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 19/04/2007, 16h14
  4. Lecture d'un pipe de façon non-bloquante
    Par Premium dans le forum POSIX
    Réponses: 6
    Dernier message: 31/05/2006, 09h02
  5. Rendre la lecture non bloquante
    Par Charlinecha dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 05/07/2005, 15h46

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