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 :

partage de donné entre 2 thread


Sujet :

MFC

  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Par défaut partage de donné entre 2 thread
    Bonjour,

    je cherche des infos sur comment partager une CStringList entre 2 thread, un qui la remplirait et l'autre qui la viderai

    nb : je cherche pas une solution toute faite mais des tut, cours, exemple ...
    jvois pas ou chercher sur le site

    merci

  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
    Par défaut
    salut,
    l'emploi d'un objet CMutex devrait suffire , mutex == mutual exclusion.
    pour acceder à la ressource protégée il suffit de faire Lock(),et Unlock() a la fin du traitement.

  3. #3
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Par défaut
    ok, merci pour l'info

  4. #4
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Par défaut
    en fait, il faudrait que ce soit non blocant,

    jm'explique,

    jai un processus qui doit absolument tourner en continu et remplir une stringlist,

    un second processus doit tourner en parallele et upper ces infos sur le net, au fur et a mesure qu'il up, les données doivent être supprimée de la liste une fois uppées.

  5. #5
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    Dans ce cas, tu ne peux pas te permettre que ce soit non bloquant, car en cas d'acces simultané, tu va tout faire planter (ou, dans le meilleur cas, tu aura des effets de bords incontrôlés). Mais ça ne pose pas de problème: quand tu veux faire un RemoveAt() ou un AddTail(), tu les insère dans une boucle while (tant que CMutex.IsLock()) avec un wait.

    Ensuite, viens le problème de savoir où tu met ta variable (la CStringList). En effet, souvent l'utilisation de threads necessite des callbacks. Mais ce n'est peut-être pas ton cas.

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Par défaut
    tu les insère dans une boucle while (tant que CMutex.IsLock()) avec un wait.
    ??

    c'est quoi ce wait ?
    j'avais cru comprendre qu'en faisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    CSingleLock sLock(&(m_pOwner->m_mutex));
     
    sLock.Lock();
     
    // code sensible
     
    sLock.Unlock();
    ca suffisait, l'instruction sLock.Lock(); n'est pas deja blocante ? en attente que le mutex soit libre

    est ce que je me trompe ?

  7. #7
    r0d
    r0d est déconnecté
    Membre expérimenté

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 288
    Billets dans le blog
    2
    Par défaut
    ouioui pardon, j'ai confondu avec la méthode qui consiste à utiliser des WaitFor*Oject(). Désolé.
    Donc non, tu ne te trompes pas.

  8. #8
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    650
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 650
    Par défaut
    ok merci

    ca a l'air de marcher nickel !

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

Discussions similaires

  1. Partage de données entre fonctions
    Par 13mike dans le forum Langage
    Réponses: 3
    Dernier message: 09/08/2007, 11h46
  2. Partage de données entre plusieurs prcessus (fork())
    Par mobscene dans le forum Langage
    Réponses: 2
    Dernier message: 18/01/2007, 17h36
  3. Comment partager les ressources entre 2 threads?
    Par remimichot dans le forum Concurrence et multi-thread
    Réponses: 7
    Dernier message: 29/12/2005, 09h17
  4. partage de données entre applications
    Par dr_feelgood dans le forum Access
    Réponses: 2
    Dernier message: 09/11/2005, 10h42

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