Bonjour,
Je crois que tout est dans le titre, mais je vais développer un peu.
Il y a quelques temps, j'ai du faire un programme qui effectuait un traitement en n étapes.
Plusieurs options s'offraient alors :
- Faire un boucle de traitement sur le n étapes
- Créer un Thread qui effectuait cette même boucle
- Créer un QTimer lancant n fois un signal
Je les ai donc réalisées dans l'ordre. La première étape bloquait toute mon application , impossible de cliquer nulle part tant que le traitement n'était pas terminé.
Le Thread fonctionnait, mais j'ai du m'en séparer suite à un problème que je pensait inhérent au multithreading et à l'accès aux ressources.
Le QTimer est mit en place et fonctionne parfaitement.
J'ai plusieurs questions :
- Pourquoi le QTimer qui n'est pas un Thread, rend t-il la main sur l'application ? En effet, si le temps d'execution du SLOT du Timer est inférieur au temps attribué par ce dernier en chaque envoi de Signal, on peut comprendre qu'on conserve la main sur le programme et que l'on puisse cliquer, etc etc, mais dans le cas inverse, comment se fait-il que l'utilisateur puisse intéragir avec l'application. Le Timer n'est pas sencé utiliser tout le CPU tant que son traitement n'est pas terminé ? Il agi comme s'il effectuait le traitement dans un autre processus et je ne comprends pas :/
- Dans ce cas là, qu'est-ce qui justifie plus l'utilisation du Timer que du Thread, qu'auriez vous choisi ?
Merci d'avance
Partager