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 code par plusieurs instances


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 2
    Par d�faut Partage de code par plusieurs instances
    Bonjour � tous,
    J'ai d�velopp� une application WIN32 multi-instance qui fonctionne bien.
    Le probl�me, c'est que lorsque je lance l'appli 20 fois sur mon poste, la 21�me ex�cution s'arr�te avec une erreur de "manque de m�moire". L'appli fait environ 14 Mo en m�moire (dixit le gestionnaire de t�ches). 20 instances sur une machine mono-utilisateur c'est largement suffisant; malheureusement, l'appli va �tre utilis�e sur une machine serveur (CITRIX ou TSE) avec un nombre d�passant largement les 20. La machine de test a 992 Mo de m�moire. Un rapide calcul donne pour mes 20 instances 280 Mo soit moins que les 992 Mo. Y a t'il une methode avec visual studio .net (utilis�e en C++ et MFC) pour profiter de toute la m�moire dispo ? Peut-on demander qu'il y ait un seul chargement de code pour toutes les intances (un peu comme pour les dlls en WIN16) ?
    Winword 2003 fonctionne ainsi; un seul module winword appara�t dans le gestionnaire des t�ches.
    Merci pour votre aide

  2. #2
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    C'est li� � l'OS, et l'OS partage d�j� le code d'un m�me ex�cutable entre plusieurs instances, sans qu'il n'y ait rien � faire.
    Le probl�me, c'est plutot le gestionnaire de t�ches. Et la mani�re de comptabiliser la m�moire aussi. Ce qui va �tre partag� entre toutes les instances, c'est le code executable, soit au maximum la taille de ton exe sur le disque. La m�moire allou�e par chacune de tes instances, tu peux l'estimer dans la colonne "Taille MV" (et pas "Util. M�moire") du gestionnaire de taches.
    Si Winword n'apparait qu'une seule fois, c'est tout simplement parce que Word a �t� programm� pour que quand une 2� instance est lanc�e, elle "se connecte" � la premi�re, lui donne le document � traiter, et se termine. Ainsi il n'y a qu'un seule instance qui bosse. Y'a pas d'option de compilation l� derri�re, juste du code.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Ao�t 2005
    Messages
    2
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Ao�t 2005
    Messages : 2
    Par d�faut
    Merci Aur�lien pour ta r�ponse.

    Elle est tr�s claire. Sais-tu s'il y a un topic Microsoft l�-dessus ? Le partage de code entre instances.

    La deuxi�me chose qui me chagrine aussi, c'est que mon appli plafonne � 20 instances par poste. A priori, ce n'est m�me pas li� � l'utilisation de la m�moire. En fait c'est une appli MDI. Pour faire les tests, je l'ouvre 20 fois sans document et 20 fois avec document et j'arrive toujours au m�me r�sultat; impossible d'en lancer une 21�me. Je ne sais pas trop dans quelle direction chercher : le nombre de handles, le nombre de thread, un vaste chantier...
    Le comportement est sensiblement diff�rent sur un serveur CITRIX; sur ce genre de machines (d'apr�s des utilisateurs), un maximum de 20 utilisateurs peuvent lancer le m�me document avec l'appli. Le 21�me utilisateur ne peut pas utiliser le m�me document; il y arrive en faisant un "Enregistrer sous". C'est des documents composite COM. Les documents sont ouverts en RW si possible sinon en R seulement. Je viens de finir un patch qui lit le document et le referme. J'envoie pour test. Wait and see.

  4. #4
    Expert confirm�

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 756
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 43
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations professionnelles :
    Activit� : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 756
    Billets dans le blog
    3
    Par d�faut
    Il faut trouver qui provoque l'erreur de manque de m�moire. Plus tu utilises de composants logiciels / biblioth�ques qui ne sont pas de toi, plus c'est difficile. C'est peut �tre une limitation d'une lib que tu utilises.
    Pour des r�f�rences sur le sujet, le mieux c'est surement le livre "Windows Internals, Fourth Edition".
    Sinon la MSDN:
    http://msdn.microsoft.com/library/en-us/memory/base/memory_management.asp
    http://msdn.microsoft.com/library/en-us/dngenlib/html/msdn_ntvmm.asp
    et �a aussi:
    http://www.flounder.com/hooks.htm

Discussions similaires

  1. Partager du code entre plusieurs classes-filles
    Par gvdmoort dans le forum D�buter avec Java
    R�ponses: 3
    Dernier message: 24/03/2012, 00h58
  2. R�ponses: 3
    Dernier message: 11/11/2008, 18h01
  3. [d�butant] partage de variable par plusieurs threads
    Par dahtah dans le forum D�buter avec Java
    R�ponses: 6
    Dernier message: 06/03/2007, 13h34
  4. Partager du code Javascript entre plusieurs pages HTML
    Par oceane751 dans le forum G�n�ral JavaScript
    R�ponses: 29
    Dernier message: 10/01/2006, 15h20
  5. R�ponses: 1
    Dernier message: 02/01/2006, 19h05

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