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

C++ Discussion :

Liberation de memoire désyncronisee


Sujet :

C++

  1. #21
    Expert confirmé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Décembre 2003
    Messages
    3 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 3 549
    Par défaut
    Bon il reste à vérifier d'où sort BOOST_HAS_WINTHREADS
    C'est une constante préprocesseur définie dans boost/config.hpp.

  2. #22
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 98
    Par défaut
    Resalut !

    Désolé de ne pas répondre trop vite mais je n'ai pas internet à mon appart.

    Bon comme je m'en doutait un peu le free n'est donc pas une méthode appropriée lorsque l'on fait des new j'ai donc réalisé ce que tu suggérais c'est à dire une classe abstraite avec un destructeur virtuel don je fais hériter tous les objets que je veux pouvoir détruire de façon asynchrone.

    Reste plus qu'a trouver comment définir la priorité d'un thread sous boost et on pourra dire que mon post aura été très fructueux pour moi ( même si c'est déja le cas !!)

    @+
    Seb

  3. #23
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 98
    Par défaut
    Bon je viens de jeter un oeil apparemment la definition de la priorité est difficilement portable et c'est donc pour cela qu'elle n'est pas incluse dans boost ... à ce que j'ai compris je vais don rajouter un petit #ifdef WIN_32 et utiliser la methode SetThreadPriority() pour le moment !!!


    Si vous avez plus d'infos je prends sinon merci quand même !

  4. #24
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    Arf malheureusement je n'ai pas boost d'installé sur mon compilateur. Donc je ne peut pas t'aider.

    Juste un petit conseil, n'appelles pas SetThreadPriority directement.
    Utilise une fonction à toi comme "PortableThreadPriority" qui servira d'intermédiaire. Comme ça le jour où boost intègrera cette fonctionnalité, tu n'aura qu'une seule ligne à modifier au lieu de partout dans ton code.

  5. #25
    Membre expérimenté
    Inscrit en
    Décembre 2003
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 272
    Par défaut
    Citation Envoyé par mchk0123
    Je penses que "BOOST_HAS_WINTHREADS" veut dire à la fois "je suis sur plateforme Windows" (ne pas oublier que Boost est multi-OS) et "sur cette plateforme les threads Windows existent" (par exemple ils pourraient manquer sur Windows CE (ce que je doute) ou sur d'autres Windows).
    Alors j'ai les 2 définitions suivantes, suivant l'environement. Pour win32;hpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #ifndef BOOST_HAS_PTHREADS
    #  define BOOST_HAS_WINTHREADS
    #endif
    Pour Cygwin.hpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    #if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS)
    ...
    #else
    #  if !defined(BOOST_HAS_WINTHREADS)
    #     define BOOST_HAS_WINTHREADS
    #  endif
    #  define BOOST_HAS_FTIME
    #endif
    Bref, dans la majorité des cas, boost utilise le Sleep de l'API win32.

    @Ulmo : Je vais abuser, mais étant donné que je n'ai pas d'installation de Boost sous la main, tu pourrais faire un cherche sur boost::thread.h pour voir s'il existe une fonction Low Level similaire à "SetThreadPriority()" ?
    Sebastien P. t'en remercie par avance .
    Tu peux abuser, mais l'interface de boost::thread est très limitée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class BOOST_THREAD_DECL thread : private noncopyable
    {
    public:
        thread();
        explicit thread(const function0<void>& threadfunc);
        ~thread();
        bool operator==(const thread& other) const;
        bool operator!=(const thread& other) const;
        void join();
        static void sleep(const xtime& xt);
        static void yield();
    private:
    ...
    };
    Edit : Et comme les données sur le thread sont privée, c'est pas évident d'aller appeler SetThreadPriority() dessus...

  6. #26
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    Arf ... va falloir que Sebastien P. écrive du code "beta" (ie. non garantie qu'avec la prochaine version de boost ça marche encore).

  7. #27
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 294
    Détails du profil
    Informations personnelles :
    Localisation : Royaume-Uni

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 294
    Par défaut
    Salut,

    Citation Envoyé par Sébastien P
    J'aimerais désyncroniser la libération mémoire.
    Juste pour cerner un peu : c'est pour se familiariser avec les processus légers ou c'est vraiment la solution trouvée la plus simple à un vrai problème (genre ça rame :p) ?

    MAT.

Discussions similaires

  1. Liberer la memoire
    Par Renardo dans le forum Access
    Réponses: 13
    Dernier message: 15/05/2006, 11h33
  2. liberation de memoire necessaire ?
    Par firejocker dans le forum C
    Réponses: 14
    Dernier message: 09/05/2006, 17h14
  3. Liberation de memoire
    Par dede92 dans le forum C
    Réponses: 17
    Dernier message: 18/03/2006, 21h31
  4. liberer la memoire
    Par jopab04 dans le forum Langage
    Réponses: 14
    Dernier message: 11/02/2006, 15h56
  5. liberation de memoire d une fenetre modale
    Par ienien dans le forum MFC
    Réponses: 6
    Dernier message: 04/01/2006, 13h53

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