Qt : pourquoi et quand utiliser les threads ?

Tirer les flux

Parfois, même souvent, les threads sont utilisés pour consommer rapidement une liste, dans le cadre d’un design pattern producteur-consommateur.

Cela signifierait qu’un producteur remplit un conteneur d’entités que le consommateur (votre programme) doit dépiler, si possible aussi vite que le producteur. Plusieurs architectures s’offrent à vous dans ce cas : le fork, c’est-à-dire multiplier les consommateurs (si possible sur des machines différentes ou des coeurs différents), ou celle qui a ma préférence : les flux tirés.

En effet, pourquoi produire plus qu’on ne peut consommer ? Ne vaut-il pas mieux produire que ce qui peut être consommé, et ce qui éventuellement déjà été commandé ?

Des tas d’exemples permettent de comprendre l’intérêt de cette logique mais je pense que le lazy-loading est un des exemples les plus parlant : on ne charge que les données qu’on est sur le point d’utiliser. Par exemple, si vous regardez une vidéo en streaming, vous ne chargez que 30 secondes de vidéo, puis quand vous êtes sur le point de vider votre buffer, vous chargez 30 secondes de plus et ainsi de suite.

Ou encore, lorsque vous affichez un tableau de données qui proviennent d’un serveur SQL, vous ne chargez que les données que vous êtes capable d’afficher. Le reste sera chargé au moment où l’utilisateur scrollera dans le tableau.

Je publierai régulièrement des articles qui aideront à illustrer ce type de conception et à en exploiter toute la puissance.

Pourquoi ne pas créer des threads ?

Avant d’aborder le dernier point qui concerne l’implantation des threads, je voudrais faire un synthèse de mes arguments précédemment exposés en défaveur de l’utilisation des threads.

Comprenez-moi bien, je ne milite pas contre les threads. J’insiste pour que leur utilisation soit la conséquence d’une décision conceptuelle uniquement.

Ainsi il faudra veiller à prendre en compte tous les points suivants :

  • ne pas utiliser les threads pour solutionner un blocage qui ne trouve pas son explication dans la conception de l’application.
  • ne pas utiliser les threads sur des architectures incompatibles (embarqué par exemple, ou mono-processeur mono-thread).
  • adapter l’utilisation des threads aux capacités de l’architecture cible. Ne créez pas un nombre démesuré de threads si la cible est un processeur à 2 coeurs.
Comment implanter des threads ?

Pour découvrir comment implanter les threads dans Qt en suivant mes recommandations, lisez l’article comment implanter un thread ?

Partagez cet article !

Abonnez-vous à notre newsletter !

Si vous souhaitez être notifié lorsqu'un nouvel article est publié, abonnez-vous à notre newsletter et vous recevrez un email dès qu'un article sera publié.

Pages : 1 2 3 4 5

Articles similaires

Qt : l’influence du... Observations Voici la liste de mes principales observations, sans interprétation : Sous Windows, en version Release, une application compilée sous MSVC en 64 bits est environ 50%
Qt : distribuer ses appli... La distribution d’une application est une étape importante de la vie d’une application, elle nécessite d’être pensée très tôt dans la conception. Cette série d’articles présente les
Qt : Traiter une liste de... Pour qu’une interface graphique reste fluide aux yeux de l’utilisateur, le thread qui la gère ne doit jamais être interrompu plus d’une poignée de millisecondes. Or le
Qt : comment implanter un... L’application Voici à présent le fichier main.cpp [crayon-5d83b60d910fd672510232/] Après avoir déclaré une instance de QCoreApplication, nous démarrons le contrôleur et exécutons le traitement threadé. Au bout de
Apprendre à développer ... Une de mes activités est la formation professionnelle à la conception et à la programmation d’applications avec Qt. J’envisage aujourd’hui de créer un MOOC payant pour partager
Utiliser la technique du ... Le lazy-loading, ou chargement paresseux en français, est une réponse simple à la question simple “pourquoi charger plus de données que nous ne pouvons en afficher ?”.
Adopter les flux tirés d... Nous abordons un des points essentiels de l’architecture réseau et applicative efficace et économe : les flux tirés. Partagez cet article ! Abonnez-vous à notre newsletter !
Qt : pourquoi et quand ut... Tirer les flux Parfois, même souvent, les threads sont utilisés pour consommer rapidement une liste, dans le cadre d’un design pattern producteur-consommateur. Cela signifierait qu’un producteur remplit
Livre Maîtrisez Qt 5 ... La seconde édition du livre de Tristan Israël, Maîtrisez Qt 5 – Développement d’applications professionnelles, est parue. Vous pouvez le découvrir sur le site des éditions ENI.

Laisser une réponse

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *