Timer dans Thread [Résolu]

Messages postés
641
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
- - Dernière réponse : cs_Jean_Jean
Messages postés
641
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
- 17 févr. 2010 à 16:57
Bonjour,
Je me pose une question sur l'optimisation du temps d'exécution d'une application.
Sur la fenêtre principale j'ai divers voyants témoins de l'état des données de mon application qui ne sont mis à jour qu'à intervalles réguliers (1 seconde ou lors d'évènements particuliers). Le temps de mise à jour n'est pas très important (inférieur à 200 ms). J'ai également une horloge analogique.
Les voyants et l'horloge sont commandés par timer d'une seconde.
Or lorsque je vais développer des demandes de requête, les calculs vont être longs et je souhaiterai optimiser mon temps micro pour cela.

Ma question est la suivante : Ai-je intérêt à mettre mes timers en Threads pour libérer des temps d'exécution de mon appli où est-ce que ça ne changera rien?
Je pourrai bien entendu suspendre mes timers des mises à jour, mais je ne le souhaite pas car les voyants d'état et l'horloge peuvent rester visibles.

Voilà, merci à ceux qui ont déjà réfléchi à ce problème et me donneront un avis.

Jean_Jean
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
26 juillet 2018
10
3
Merci
« le but est justement de capter un max de ressources du micro pour mon appli »

Dans ce cas, ce n'est pas un problème de Thread et de leur priorité.
Il te faut plutôt jouer sur la priorité de ton processus.

Un exemple :

if not SetPriorityClass(GetCurrentProcess, HIGH_PRIORITY_CLASS) then ShowMessage('Erreur dans le changement de priorité du processus.'); //Fait passer la classe de priorité d'une application à la priorié haute.


Mais attention ! On touche là aux réglages du multi-tâche Windows et le fonctionnement préemptif peut être perturbé par un abus de priorité. Et, sous Vista, c'est parfois carrément l'écran bleu !

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 153 internautes nous ont dit merci ce mois-ci

Commenter la réponse de Caribensila
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
26 juillet 2018
10
0
Merci
Salut Jean_Jean,

Les Threads ne permettent pas, en principe, d'optimiser le temps d'exécution. Je dirais même qu'ils le relentissent.
En effet, le but des threads est de permettre le multi-tâche. Tu imagines donc bien que si d'autres traitements se déroulent en même temps que le tien, il sera ralenti d'autant...

Il existe cependant un domaine peu étudié à ce sujet ( et ça me donne une idée à creuser , au passage :) qu'est la présence de plus en plus répandue des MultiCores. Selon moi, ils permettraient d'accélérer une application (aux dépens des autres, bien entendu. Car rien ne se perd et rien ne se crée).
Il existe un logiciel qui se vante de faire ça (Multicore Optimizer), mais qui ne tient pas ses promesses d'après les pros qui l'ont essayé.

Il reste que des Threads sont toujours susceptibles d'être optimisés. Et j'avais codé un petit soft dans ce but.
Commenter la réponse de Caribensila
Messages postés
641
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
2
0
Merci
Merci Caribensila pour tes réponses.

Oui, j'ai vu ton code très intéressant!...
Effectivement, si je prends du temps microprocess d'1 côté, je le perds de l'autre. Mais peu importe, le but est justement de capter un max de ressources du micro pour mon appli. Je pensai que le fait de programer un haut niveau de priorité dans les threads pouvait me donner l'avantage.
Mais ça ne semble pas évident.
Donc pour l'instant, je gère mes timers en suspendant éventuellement leur exécution. De toute façon, je n'en suis pas encore là, c'était pour prévoir la structure en avance...
Reste qu'en tache de fond, le tread est intéressant!
Multicore optimizer, connait pas. Je n'ai pas envie de changer de langage de toute façon!
Affaire à suivre.

Jean_Jean
Commenter la réponse de cs_Jean_Jean
Messages postés
641
Date d'inscription
dimanche 13 août 2006
Statut
Membre
Dernière intervention
13 décembre 2018
2
0
Merci
Oui, c'est ce que je voulais dire! Je me suis mal exprimé, mais c'est parce qu'à prioiri, je pensai que la définition des priorité des procesus
étaient liés aux threads.
Ta proposition est peut-être une piste.
Si le réglage agit directement sur windows ce qui parait logique, il sans doute restituer sa valeur à la fin du processus. A moins que les choses se rétablissent d'elles-même lorsque mon processus est fini et détruit.
Bon, il faut que j'approfondisse la question.
Merci pour tes cogits, ça m'aide!
Jean_Jean
Commenter la réponse de cs_Jean_Jean