===== 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-safe((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.)) 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]] * [[#Les classes de threading]] * [[threads-starting|Commencer les threads avec QThread]] * [[threads-synchronizing|Synchronisation des threads]] * [[threads-reentrancy|Ré-entrance et thread-safety]] * [[threads-qobject|Les threads et les QObject]] * [[threads-qtconcurrent|Programmation simultanée]] * [[threads-modules|Le support des threads dans les modules de Qt]] ==== 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 : * [[http://www.amazon.com/exec/obidos/ASIN/0134436989/wwwdeveloppec-21|Threads Primer: A Guide to Multithreaded Programming]] * [[http://www.amazon.com/exec/obidos/ASIN/0131900676/wwwdeveloppec-21|Thread Time: The Multithreaded Programming Guide]] * [[http://www.amazon.com/exec/obidos/ASIN/1565921151/wwwdeveloppec-21|Pthreads Programming: A POSIX Standard for Better Multiprocessing]] * [[http://www.amazon.com/exec/obidos/ASIN/1565922964/wwwdeveloppec-21|Win32 Multithreaded Programming]] ==== Les classes de threading ==== Ces classes sont appropriées aux applications threadées. | [[QtConcurrentRun|Lancement asynchrone]] | L'en-tête fournit une manière de lancer une fonction dans un thread séparé. | | [[QtConcurrentFilter|Concurrence et réduction de filtre]] | L'en-tête fournit des filtres simultanés et réductibles. | | [[QtConcurrentMap|Concurrence et réduction de map]] | L'en-tête 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 à pour la traduction et à , et pour leur relecture !