Accueil > Forum > > > > threads et dlls
threads et dlls
mardi 4 décembre 2007 à 02:25:51 |
threads et dlls

raoulli
|
bonsoir a vous. je me posai une question. j'ai dans un prog plusieurs threads assez virulents. ils sont tous reunient dans un seul exe, et ce prog commence a avoir des deffaillances d'affichage, car je pense trop stressé. un trhead attend la reponse d'un autre qui attend une reponse de la fenetre principale, qui elle meme a crée une autre fenetre. enfin un truc assez bourratif. ma question etait la suivante, et si je mettais ces threads dans plusieurs dll, un gros thread par dll, ceci ne serrais pas mieux ? bonne soirée. bye.
|
|
mardi 4 décembre 2007 à 14:07:15 |
Re : threads et dlls

BruNews
|
Si tu ne prévois pas de réemploi de ces DLLs dans un autre prog, ça ne servira à rien.
ciao... BruNews, MVP VC++
|
|
mardi 4 décembre 2007 à 15:43:18 |
Re : threads et dlls

raoulli
|
Decharger mon prog, de ce stresse. bye.
|
|
mercredi 5 décembre 2007 à 12:42:06 |
Re : threads et dlls

raoulli
|
ok, la question n'a pas été comprise. pas grave, je transfert du code dans cette dll, verra bien. bye.
|
|
mercredi 5 décembre 2007 à 13:25:19 |
Re : threads et dlls

BruNews
|
Mais enfin, je ne vois pas ce que ça arrangerait d'appeler le même code depuis une dll au lieu d'une adresse fixe dans l'exe. Il n'y a rien de bien mystérieux dans cette question.
ciao... BruNews, MVP VC++
|
|
mercredi 5 décembre 2007 à 18:05:32 |
Re : threads et dlls

_dune2_
|
Salut,
attention, je pense qu'il y a là un problème de compréhension ou d'appréhension entre "le code binaire" et "son exécution".
Le fait de dispatcher ton code dans une DLL partage effectivement ton code dans plusieurs fichiers binaires. Mais lors de son exécution, tous les bouts (exe + dlls) sont chargés en mémoire et ne font plus qu'un seul binaire prêt à être exécuté. Et la reflexion de BruNews va dans ce sens, il-y-a en effet aucun avantage en terme d'exécution à utiliser une dll si ce n'est de le partager entre plusieur binaire.
Je passe par un exemple pour illustrer mon explication peut-être un peu confuse :
une fonction "toto()" appelé par "main()"
- binaire Executable contenant "main()" et "toto()" lors de son chargement, "main" et "toto" son chargés en mémoire lors du chargement de l'executable. puis exécution du code main() qui appelle toto()
- binaire executable contenant "main()" + une DLL contenant "toto()" lors du chargement de l'executable, "main" est chargé. A ce moment là, le linker s'aperçoit qu'il lui manque la fonction "toto", il va donc la chercher dans la DLL pour la charger en mémoire à son tour. puis exécution du code main() qui appelle toto()
On voit bien que le fait de déplacer la fonction "toto()" n'a rien changé à l'exécution.
Dans tous les cas, une fois ton programme complet chargé en RAM (que ce soit en une seule fois ou en plusieurs fois via des DLL), son fonctionnement est identique .. ça ne résoudra donc pas tes problèmes de surcharge CPU et engorgements divers ...
Pour résoudre ton problème, plusieurs pistes sont à explorer : 1) donner des priorités différentes à tes threads, de manière à rendre plus réactives celles qui doivent l'être, relégant automatiquement les autres en IDLE 2) mieux réorganiser tes threads de manière à regrouper les traitements entre eux et events entre eux (faire des threads processing qui ont besoin de CPU en prio-low et des threads interactifs qui ont besoin de peu de CPU en prio-high pour les rendre trés réactifs)
Voilà, je pense que ça pourra t'aider.
Gentoo... que du bonheur ...
|
|
jeudi 6 décembre 2007 à 08:49:19 |
Re : threads et dlls

ToutEnMasm
|
Salut, Si le programme manifeste des problèmes d'affichage,cela veut dire que la boucle des messages s'éxécute de manière incorrecte,c'est tout. Il n'y a aucune combine pouvant résoudre ce problème. Poster le code içi permettrait d'y voir plus clair.
|
|
jeudi 6 décembre 2007 à 11:45:23 |
Re : threads et dlls

raoulli
|
salut.
merci. oui _dune2_, j'y avait pas penser, a deffinir les priorités des threads, en fonction de celui qui doit bosser le plus a un certain moment.Je vais faire ca et voir ce que ca donne, mais, ca va resoudre mon probleme je pense.Ils n'ont pas tous besoin de bosser a donf tout le temps.Et je vais virrer les SendMessages, et y mettre des PostMessages, ca serra deja mieux, avec un bool de controle.
Ok, ToutEnMasm, mais ma boucle de messages est tout a fait correcte, sauf que, les threads, prennent plus de priorités par rapport a la boucle de messages de la fenetre principale, elle recupere ce qui lui arrive, et elle ne doit plus recevoir grand chose, avec tout ce stresse, hi.
j'ai un quad-core, je teste, avec ce nouveau prog, ce cpu, ce qu'il est capable de faire, mais, etant nouveau (le cpu), je ne le connait pas assez, pour tirer partie de ces 4 coeurs !!!
encore merci. bonne jounée. bye.
|
|
vendredi 7 décembre 2007 à 11:19:56 |
Re : threads et dlls

ToutEnMasm
|
Salut, Je cite
Ok, ToutEnMasm, mais ma boucle de messages est tout a fait correcte, sauf que, les threads, prennent plus de priorités par rapport a la boucle de messages de la fenetre principale, elle recupere ce qui lui arrive, et elle ne doit plus recevoir grand chose, avec tout ce stresse, hi.
Affirmation gratuite (sans montrer le code ) et quelque peu ignorante du fait que l'on utilise le plus souvent les threads pour permettre à la boucle des messages de se dérouler normalement.
|
|
vendredi 7 décembre 2007 à 16:17:10 |
Re : threads et dlls

raoulli
|
salut, toutenmasm.
je te donne le code, alors, mais tu ne serra pas surpris. c'est du connu, c'est du iczelion, je me sert de template, a chaque fois, pour ce qui est des fenetres. ha, bon, ha, ben j'y ai jamais pensé, de faire un thread pour une boucle de message, j'en vois pas l'utilité, mais, si tu l'dis.
je peut te donner la boucle de dispatch:
*** proc local msg:MSG invoke CreateDialogParamA,hInstance,MINI_RES,NULL,addr ***DlgFunc,NULL
.if eax != NULL mov hInvisibleDlg,eax ;======================================================================= ; MESSAGES LOOP ;======================================================================= .WHILE TRUE invoke GetMessage, addr msg,NULL,0,0 .BREAK .IF (!eax) invoke TranslateMessage, addr msg invoke DispatchMessage, addr msg .ENDW mov eax,msg.wParam .endif ret *** endp
quant au traitement des differents messages: genre WM_********** par ***DlgFunc
c'est trop gros, mais il n'y a aucune latence dedans, enfin j'en ai pas vu. car comme me l'a dit une autre personne, qui inclu des timers pour messurer, les temps a divers endroit de son prog, du genre bootvis, mais perso, et plus simple bien sur, je m'en sert aussi. je vais utiliser, d'autres traitements, enfin, si je trouve une parade, (je vais la trouver), je la poste. merci. bye.
|
|
Cette discussion est classée dans : prog, question, threads, dlls, attend
Répondre à ce message
Sujets en rapport avec ce message
presentation & petite question... [ par BlackWizzard ]
tout d'abord, je suis le co-webmaster de ce site, mais je vous previent, je n'ai que les bases et que la theorie, aucune pratiques!le prob, C que G ja
Une question conne [ par Slashgo ]
Je voudrais juste savoir où quelle(s) logiciels il faut pour dévelloper en assembleur.Gratuit de préférence@+
ptite question [ par comax ]
Voilà, j'ai un pc qui est relativement ancien et son bios ne prend pas les cdrom bootable. Or j'ai un cdrom bootable que j'aimerai bien voir. Je voudr
demander 1 clef avant de lancer l'application [ par badboy7852 ]
Je viens de créer un prog .asm avec MASM32 et j'aimerais que quand je lance mon .exe y ait une fenêtre ki apparaisse en me demandant le mot de passe p
Question de débutant [ par Laurent1313 ]
Voilà je débute avec l'assembleur sous Delphi et il y a un truc que je ne comprends pas. Je voudrais juste savoir quelle est la différence entre :ça :
Question sur Langage PERL [ par marouanito ]
salut à tous,je m'y connais pas trop dans Perl, mais je voulais juste savoir comment on fait sous Perl pour convertir une variable en virgule flottant
Petite question... [ par did2604 ]
Bonsoir,Que signifie exactement la notation crochet en assembleur ? Je m'explique, par exemple : mov cl,[bx], je suppose que ce n'est pas un move ordi
Compilateur C/C++ [ par Bombela ]
Salut !Quand on utilise un compilateur C/C++, il est livré avec ses bibliothèque. Maintenant, imaginez que je fasse un os (imaginez seulement), les ro
Programme désassemblé ! [ par pierre63 ]
Bonjour,Voia, j'avais fait un prog en vb que j'avais compilé donc j'ai un setup puis je l'install c me donne un .exe !Probleme j'ai perdu la source de
Question Asm/C++ [ par Lelys ]
Bonjour,Je voudrai faire un OS, mais le problème c'est que je ne m'en sort pas en ASM...Je suis plus allese en C/C++.Mais le problème est que les syst
Livres en rapport
|
Derniers Blogs
[MSTD10] SHAREPOINT 2010 ET TEAM FOUNDATION SERVER[MSTD10] SHAREPOINT 2010 ET TEAM FOUNDATION SERVER par phil
Un post rapide pour vous informer de la disponibilité de la vidéo de ma présentation sur SharePoint 2010 & Team Foundation Server. http://www.microsoft.com/france/vision/mstechdays10/Webcast.aspx?EID=20215d48-02e3-4d43-8c36-e53505c3b316 Dans la ...
Cliquez pour lire la suite de l'article par phil [MSTD10] SQL SERVER 2008 POUR LES DéVELOPPEURS ET VISUAL STUDIO TEAM SYSTEM DATABASE EDITION[MSTD10] SQL SERVER 2008 POUR LES DéVELOPPEURS ET VISUAL STUDIO TEAM SYSTEM DATABASE EDITION par Miiitch
Lors de cette session que j'ai animé avec Rui , j'ai eu l'occasion de présenter, en plus des nouveautés de SQL Server 2008, comment utiliser l'édition "database" de Visual Studio 2008. Le principe? Avoir les mêmes outils lors que l'on travaille avec une b...
Cliquez pour lire la suite de l'article par Miiitch [WF4] LOCALISER SIMPLEMENT UNE ACTIVITé ET SON DESIGNER WPF[WF4] LOCALISER SIMPLEMENT UNE ACTIVITé ET SON DESIGNER WPF par JeremyJeanson
La localisation . vous connaissez ce system miraculeux qui permet à votre application de s'afficher dans la langue de l'utilisateur (à condition de l'avoir intégrée dans votre programme). Comment mettre en place la localisation dans WF4? Cette question m'...
Cliquez pour lire la suite de l'article par JeremyJeanson [TECHDAYS 2010] WEBCASTS ET SLIDES[TECHDAYS 2010] WEBCASTS ET SLIDES par Audrey
Les webcasts des sessions des Techdays 2010 sont maintenant disponibles en ligne ! Me concernant, voici les slides et le webcast de la session Blend 3 / Skechtflow : Dessinez c'est gagné ! (animée avec Michel Perfetti ) Les slides et le webcast : Blend 3/...
Cliquez pour lire la suite de l'article par Audrey NDEPEND V3. J'ADORE SON INTéGRATION AVEC VS2010NDEPEND V3. J'ADORE SON INTéGRATION AVEC VS2010 par tja
Après une petite introduction à son utilisation que vous pouvez lire ici j'ai également eu envie d'installer ma copie et de jouer un peu avec. Après les premières minutes de son utilisation. J'ai tout de suite ADORE. L'utilisation intuitive sans besoi...
Cliquez pour lire la suite de l'article par tja
Logiciels
Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor Xlite (v 3.0 build 41150)XLITE (V 3.0 BUILD 41150)c'est un logiciel qui permet de téléphoner par Internet à l'aide d'un compte SIP pratique pour le... Cliquez pour télécharger Xlite Academy System (10.9.3.0)ACADEMY SYSTEM (10.9.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|