Timer dans Thread

Résolu
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 - 17 févr. 2010 à 11:45
cs_Jean_Jean Messages postés 615 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

3 réponses

Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
17 févr. 2010 à 15:19
« 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 !
3
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
17 févr. 2010 à 14:56
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
0
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
17 févr. 2010 à 16:57
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
0
Rejoignez-nous