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 :

[MFC]Probl�me avec CCriticalSection


Sujet :

MFC

  1. #1
    Membre confirm�
    Inscrit en
    Mai 2006
    Messages
    212
    D�tails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 212
    Par d�faut [MFC]Probl�me avec CCriticalSection
    Bonjour tout le monde,

    Je suis en train de r�aliser une application et j'ai un probl�me avec un objet (c'est un map) � acc�s concurrent. En fait, j'ai un thread qui r�alise des traitements sur cet objet et une m�thode (m�thode Fill) qui le remplit s'ex�cutant en parall�le.

    Voil� ce que j'ai trouv� comme solution :

    J'ai r�alis� une classe qui h�rite de CCriticalSection et qui contient l'objet Map. Je red�finis la m�thode insert, avec un lock au d�but et unlock � la fin, que j'appelle dans Fill.

    Mon programme me g�n�re une exception de violation d'acc�s et je sais vraiment pas pq. Quelqu'un peut m'aider?

    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
    Euh, g�n�ralement, on fait le contraire: Une classe qui h�rite de/contient map et qui contient une CCriticalSection.

    H�riter de CCriticalSection n'est pas le genre de chose que je pr�conise. D'ailleurs, la classe �quivalente en .Net est sealed...

    PS: Elle est initialis�e, ta CCriticalSection ? (traduire: dans ta connerie, tu appelles bien le constructeur parent?)
    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 confirm�
    Inscrit en
    Mai 2006
    Messages
    212
    D�tails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 212
    Par d�faut
    Oui, j'appelle le constructeur parent.
    J'ai essay� l'autre solution et j'ai le m�me probl�me. Je crois que c du � autre chose.

    Merci.

  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
    Sans code, ce sera difficile de t'aider...
    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 confirm�
    Inscrit en
    Mai 2006
    Messages
    212
    D�tails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 212
    Par d�faut
    J'ai plein d'�l�ments et de corr�lation dans mon programme. Je sais pas qu'est ce qu'il faut que je pr�sente au juste.

    Voici la classe MyMap :
    typedef map<const int, ClassServer> ServList;
    class MyMap
    {
    public:
    MyMap();
    ~MyMap();

    public:
    ServList *Servers;
    CCriticalSection m_CriticSection;
    };
    Le constructeur :

    MyMap::MyMap()
    {
    Servers = new ServList();
    }
    Et � chaque fois que je dois acc�der au map Servers., je fais m_CriticSection.Lock() et� la fin Unlock.

    C'est �a le principe de la section critique?

  6. #6
    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
    oui.
    Tu peux aussi utiliser la classe CSingleLock qui peut avoir son utilit� (elle fait un unlock automatique dans son destructeur).

    Que fait ta m�thode Fill() ? Est-ce qu'elle fait planter un programme mono-thread� ?
    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.

  7. #7
    Membre confirm�
    Inscrit en
    Mai 2006
    Messages
    212
    D�tails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 212
    Par d�faut
    J'ai pas compris ta question. Je suis d�butante avec les threads.
    La m�thode Fill ins�re un �l�ment dans le map Servers.

    //Some codes...
    m_CriticSection.Lock();
    Servers->insert(pair<const int , ClassServer> (HandleCounter,mopcServer)); m_CriticSection.Unlock();
    //Some codes....

  8. #8
    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
    Ce que je te demande, c'est si ta m�thode Fill() fait aussi planter quand "t'utilises pas les threads".
    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.

  9. #9
    Membre confirm�
    Inscrit en
    Mai 2006
    Messages
    212
    D�tails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 212
    Par d�faut
    C bon, j'ai trouv� le probl�me, �a n'avait rien � voir avec l'utilisation de CCriticalSection.

    Merci bcp de m'avoir aider.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. [MFC] Probl�me avec un splitter
    Par julien.nasser dans le forum MFC
    R�ponses: 9
    Dernier message: 24/05/2006, 15h00
  2. R�ponses: 3
    Dernier message: 10/01/2006, 14h01
  3. R�ponses: 5
    Dernier message: 10/05/2005, 10h22
  4. [MFC] Probl�me avec un RichEdit et couleur
    Par Erakis dans le forum MFC
    R�ponses: 1
    Dernier message: 24/03/2005, 14h12
  5. [MFC] probl�me avec les insertions dans CComboBox
    Par Joeleclems dans le forum MFC
    R�ponses: 12
    Dernier message: 11/06/2004, 15h31

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