Et donc pour gziper un gros fichier, tu patch zlib pour ajouter des qApp->processEvents() dedans ?
La zlib travaille par morceaux et "rend la main" pour qu'on la rappelle sur le prochain morceau à décompresser. Je vous laisse deviner ce qu'on peut faire une fois qu'on a traité un morceau et avant de passer au suivant.
Pour faire une requête HTTP tu fais une résolution DNS asynchrone + une connexion TCP asynchrone + des I/0 asynchrones etc ? Et donc tu garde un état de tout ça quelque part.
C'est une machine à états.
Tu as un code qui commence à devenir très compliqué.
Il faut être bien organisé. Mais écrire de manière synchrone requiert une toute autre organisation.
C'est certainement plus simple de faire un thread, voir un process, qui ne touche qu'à ses données locales et communique avec le thread de la gui par messages.
Comme je l'ai dit, c'est une recommandation. Si vous ne la suivez pas, vous rencontrerez d'autres difficultés (les problèmes de concurrence) et limitations (Qt a des règles bien précises d'utilisation des QObjects et des threads). Il est cependant malheureux que certaines bibliothèques ne permettent pas l'utilisation asynchrone.
[^] # Re: Correction
Posté par BFG . En réponse au journal Les bitcoins n'intéressent pas que les geeks. Évalué à 1.
La zlib travaille par morceaux et "rend la main" pour qu'on la rappelle sur le prochain morceau à décompresser. Je vous laisse deviner ce qu'on peut faire une fois qu'on a traité un morceau et avant de passer au suivant.
C'est une machine à états.
Il faut être bien organisé. Mais écrire de manière synchrone requiert une toute autre organisation.
Comme je l'ai dit, c'est une recommandation. Si vous ne la suivez pas, vous rencontrerez d'autres difficultés (les problèmes de concurrence) et limitations (Qt a des règles bien précises d'utilisation des QObjects et des threads). Il est cependant malheureux que certaines bibliothèques ne permettent pas l'utilisation asynchrone.