Table des matières

Le support des threads avec Qt

Qt fournit un support de threads dans le formulaire des classes de threading indépendantes de la plateforme, une manière thread-safe1) de poster des évènements, et des connexions signaux/slots à travers les threads. Cela rend simple le développement d’applications Qt multi-thread et de tirer profit des machines multiprocesseurs. La programmation multi-thread est aussi un paradigme très utile pour exécuter des opérations consommatrices en temps de calcul sans pour autant bloquer l’interface utilisateur d’une application.

Introduction

Les précédentes versions de Qt offraient l’option de compiler la bibliothèque sans le support des threads. Depuis Qt 4.0, les threads sont toujours activés.

Sujets :

Lectures recommandées

Ce document est destiné à un public possédant la connaissance et l’expérience des applications multi-thread. Si vous débutez dans le domaine du “threading”, reportez-vous à la liste des lectures recommandées :

Les classes de threading

Ces classes sont appropriées aux applications threadées.

Lancement asynchrone L’en-tête <QtConcurrentRun> fournit une manière de lancer une fonction dans un thread séparé.
Concurrence et réduction de filtre L’en-tête <QtConcurrentFilter> fournit des filtres simultanés et réductibles.
Concurrence et réduction de map L’en-tête <QtConcurrentMap> fournit des maps simultanés et réductibles.
QAtomicInt Opérations atomiques indépendantes de la plateforme sur des entiers.
QAtomicPointer Classe template qui fournit des opérations atomiques indépendantes de la plateforme sur des pointeurs.
QFuture Représente le résultat d’un calcul asynchrone.
QFutureSynchronizer Classe de convenance qui simplifie la synchronisation de QFuture.
QFutureWatcher Permet l’écoute d’un QFuture par l’utilisation des signaux et des slots.
QMutex Sérialisation d’accès entre les threads.
QMutexLocker Classe utilitaire qui simplifie le verrouillage et le déverrouillage des mutexs.
QReadLocker Classe utilitaire qui simplifie le verrouillage et le déverrouillage des verrous de lecture et d’écriture pour l’accès en lecture.
QReadWriteLock Verrouillage de lecture et d’écriture.
QRunnable La classe de base pour tous les objets exécutables.
QSemaphore Sémaphore de comptage général.
QThread Threads indépendants de la plateforme.
QThreadPool Gère une collection de QThread.
QThreadStorage Stockage de données par thread.
QWaitCondition Variable conditionnelle pour la synchronisation de threads.
QWriteLocker Classe utilitaire qui simplifie le verrouillage et le déverrouillage des verrous de lecture et d’écriture pour l’accès en écriture.
QtConcurrent API de haut niveau qui permet l’écriture de programmes multi-thread sans avoir à utiliser de threads de bas niveau.

Note : Les classes Qt de threading sont implémentées avec des API de threading natives : par exemple, Win32 et pthreads. Par conséquent, elles peuvent être utilisées avec d’autres threads de la même API.

Remerciements

Merci à <!zamnell!> pour la traduction et à <!dourouc!>, <!johnlamericain!> et <!hornetbzz!> pour leur relecture !

1) Une fonction ou un objet est dit thread-safe quand il peut être utilisé simultanément par plusieurs threads, en considérant uniquement son implémentation.