Thread-Unterstützung in Qt

Qt bietet Thread-Unterstützung in Form von plattformunabhängigen Threading-Klassen, einer Thread-sicheren Art, Ereignisse zu posten, und Signal-Slot-Verbindungen über Threads hinweg. Dies erleichtert die Entwicklung portabler Multithreading-Qt-Anwendungen und die Nutzung von Multiprozessor-Maschinen. Die Multithread-Programmierung ist auch ein nützliches Paradigma, um zeitaufwändige Operationen durchzuführen, ohne die Benutzeroberfläche einer Anwendung einzufrieren.

Frühere Versionen von Qt boten die Möglichkeit, die Bibliothek ohne Thread-Unterstützung zu erstellen. Seit Qt 4.0 sind Threads immer aktiviert.

Themen:

Diese Artikel gehen davon aus, dass der Leser über grundlegende Kenntnisse über Multithreading-Anwendungen verfügt.

Die Threading-Klassen

Diese Klassen sind für Threading-Anwendungen relevant.

Concurrent Filter and Filter-Reduce

Auswahl von Werten aus einer Sequenz und deren Kombination, alles parallel

Concurrent Map and Map-Reduce

Transformieren von Werten aus einer Sequenz und Kombinieren dieser Werte, alles parallel

Concurrent Run

Eine einfache Möglichkeit, eine Aufgabe in einem separaten Thread auszuführen

Concurrent Task

Ein konfigurierbarer Weg, um eine Aufgabe in einem separaten Thread auszuführen

QAtomicInteger

Plattformunabhängige atomare Operationen auf Ganzzahlen

QAtomicPointer

Vorlagenklasse, die plattformunabhängige atomare Operationen mit Zeigern ermöglicht

QFuture

Repräsentiert das Ergebnis einer asynchronen Berechnung

QFutureSynchronizer

Convenience-Klasse, die die Synchronisation von QFuture vereinfacht

QFutureWatcher

Ermöglicht die Überwachung eines QFuture mit Signalen und Slots

QMutex

Zugriffsserialisierung zwischen Threads

QMutexLocker

Convenience-Klasse, die das Sperren und Entsperren von Mutexen vereinfacht

QPromise

Möglichkeit, Berechnungsergebnisse zu speichern, auf die QFuture zugreifen kann

QReadLocker

Convenience-Klasse, die das Sperren und Entsperren von Schreib-Lese-Sperren für den Lesezugriff vereinfacht

QReadWriteLock

Lese-Schreib-Sperren

QRecursiveMutex

Zugriffsserialisierung zwischen Threads

QRunnable

Die Basisklasse für alle runnable Objekte

QSemaphore

Allgemein zählende Semaphore

QSemaphoreReleaser

Ausnahmesichere Aufschiebung eines QSemaphore::release()-Aufrufs

QThread

Plattformunabhängiger Weg zur Verwaltung von Threads

QThreadPool

Verwaltet eine Sammlung von QThreads

QThreadStorage

Pro-Thread Datenspeicherung

QWaitCondition

Bedingungsvariable für die Synchronisierung von Threads

QWriteLocker

Convenience-Klasse, die das Sperren und Entsperren von Lese- und Schreibsperren für den Schreibzugriff vereinfacht

QtConcurrent

High-Level-APIs, die es ermöglichen, Multi-Thread-Programme zu schreiben, ohne Low-Level-Threading-Primitive zu verwenden

QtConcurrent::QTaskBuilder

Wird für die Anpassung von Task-Parametern verwendet

QtFuture::WhenAnyResult

QtFuture::WhenAnyResult wird verwendet, um das Ergebnis von QtFuture::whenAny() darzustellen

QAtomicInteger::qYieldCpu()

Hinweis: Qt's Threading-Klassen sind mit nativen Threading-APIs implementiert; z.B. Win32 und pthreads. Daher können sie mit Threads der gleichen nativen API verwendet werden.

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.