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 :

Question sur l'instanciation d'une classe dans un .dll / .so


Sujet :

C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Question sur l'instanciation d'une classe dans un .dll / .so
    Bonjour,

    Je code actuellement un serveur HTTP et j'ai une question simple mais dont je n'ai pas reussi a trouver la reponse.

    Je charge dynamiquement un module .dll / .so en fonction du systeme et instancie de nombreuses fois la classe presente dans la dll a laide dune methode getInstance, jusque la tout va bien, le traitement demande est effectue.

    Mais le probleme se pose lorsque la dll traite une requete trop grosse (lecture dun fichier de 150Mo), je demande alors la creation dune nouvelle instance par la methode precedement donnee, mais lexecution est suspendue lors du new maClasse;

    Ma question est la suivante : Ne peux on pas instancier une classe lorsque le module (la classe) est en cours dexecution?

    Je precise que le module contient des mutex et des maps static.

    Cordialement

  2. #2
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    en générale on retrouve souvent la méthode getInstance associé avec des classe de type singleton


    est tu certains d'avoir plusieurs instance de ta classe, ou bien récupère tu a chaque fois la même?
    bazar: http://www.improetcompagnie.com/publ...ctacles-6.html

    BÉPO la disposition de clavier francophone, ergonomique et libre: http://bepo.fr/wiki/Accueil

    Emacs Wiki: http://www.emacswiki.org/

    En attente de ce que produira: http://www.pushmid.com

  3. #3
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Tu demandes bien une instance à partir d'un autre thread que celui qui traite la grosse requête ?
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Je suis sur d'avoir plusieurs instances, voici ma methode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    IInterpreter	*getInstance(void)
    {
    	IInterpreter	*instance = new HTTP;
    	return (instance);
    }
    Pour plus de lisibilite jai enleve le export "C"...

    Jai plusieurs instances qui consomme une pile en parallele, celle ci est evidement protegee par mutex, et une autre instance qui traite les requetes precedement. Le probleme est que si une methode est en cours d'utilisation, l'objet HTTP n'est pas instancie.

    PS: merci pour vos reponses.

    Je demande effectivement l'instanciation dans un autre thread.

  5. #5
    Membre expert Avatar de jabbounet
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2009
    Messages
    1 909
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 909
    Points : 3 284
    Points
    3 284
    Par défaut
    plusieurs pistes:
    - ton appli est trop chargée (elle traite un fichier de 150Mo) ce qui fait que les autres trucs habituellement rapide prennent du temps.

    - Il y'a une ressource commune quand tu traite le fichier et quand tu fais le new de ton instance et le mutex pris au moment de la lecture n'est pas libéré assez tôt.....
    bazar: http://www.improetcompagnie.com/publ...ctacles-6.html

    BÉPO la disposition de clavier francophone, ergonomique et libre: http://bepo.fr/wiki/Accueil

    Emacs Wiki: http://www.emacswiki.org/

    En attente de ce que produira: http://www.pushmid.com

  6. #6
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Tu n'aurais pas oublié un mutex quelque part dans ton initialisation, qui serait bloqué par l'utilisation intensive de la pile par la grosse requête ?

    N'oublie pas : là, c'est le constructeur de la classe HTTP qui est sûrement fautif, et non pas celui de IInterpreter (qui n'est pas en cause, si tu l'as bien copié intégralement dans ton message précédent)...
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Merci bien je n'avais pas pense a cela, je vais regarder du cote du constructeur et des mutex.

    Je vous tiens au courant.

    Encore merci de vos reponses et de votre aide en tout cas.

    Cetait effectivement un mutex que javais oublie de delocker.
    Merci de votre aide. A bientot

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

Discussions similaires

  1. Question sur la conception d'une classe type Logger
    Par NLS le pingouin dans le forum C++
    Réponses: 14
    Dernier message: 01/11/2010, 13h36
  2. questions sur les "import" et une "class extends"
    Par miniRoshan dans le forum Général Java
    Réponses: 5
    Dernier message: 21/04/2010, 14h35
  3. Réponses: 10
    Dernier message: 08/04/2009, 20h04
  4. Réponses: 5
    Dernier message: 04/10/2006, 15h45
  5. Instanciation d'une classe dans un CustomTag
    Par santana2006 dans le forum Servlets/JSP
    Réponses: 5
    Dernier message: 30/09/2006, 12h08

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