Auf dieser Seite

Multithreading in Qt

Qt bietet Thread-Unterstützung in Form von plattformunabhängigen Threading-Klassen, einer threadsicheren Methode zum Auslösen von Ereignissen sowie Signal-Slot-Verbindungen über Threads hinweg. Dies erleichtert die Entwicklung portabler Multithread-Anwendungen mit Qt und ermöglicht die Nutzung der Vorteile von Multiprozessor-Systemen. Die Multithread-Programmierung ist zudem ein nützliches Paradigma, um zeitaufwändige Operationen auszuführen, ohne dass die Benutzeroberfläche einer Anwendung einfriert.

Frühere Versionen von Qt boten die Möglichkeit, die Bibliothek ohne Thread-Unterstützung zu kompilieren. Seit Qt 4.0 sind Threads standardmäßig aktiviert.

Themen:

Diese Artikel setzen voraus, dass der Leser über Grundkenntnisse zu Multithread-Anwendungen verfügt.

Die Threading-Klassen

Diese Klassen sind für Anwendungen mit Threads relevant.

Concurrent Filter and Filter-Reduce

Werte aus einer Sequenz auswählen und kombinieren – alles parallel

Concurrent Map and Map-Reduce

Werte aus einer Sequenz transformieren und kombinieren – alles parallel

Concurrent Run

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

Concurrent Task

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

QAtomicInteger

Plattformunabhängige atomare Operationen mit Ganzzahlen

QAtomicPointer

Vorlagenklasse, die plattformunabhängige atomare Operationen auf Zeigern bereitstellt

QFuture

Stellt das Ergebnis einer asynchronen Berechnung dar

QFutureSynchronizer

Hilfsklasse, die die Synchronisation mit QFuture vereinfacht

QFutureWatcher

Ermöglicht die Überwachung eines QFuture mithilfe von Signalen und Slots

QMutex

Serialisierung des Zugriffs zwischen Threads

QMutexLocker

Hilfsklasse, die das Sperren und Entsperren von Mutexen vereinfacht

QPromise

Möglichkeit, Berechnungsergebnisse so zu speichern, dass sie von QFuture abgerufen werden können

QReadLocker

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

QReadWriteLock

Lese-Schreib-Sperren

QRecursiveMutex

Zugriffsserialisierung zwischen Threads

QRunnable

Die Basisklasse für alle ausführbaren Objekte

QSemaphore

Allgemeines Zählsemaphor

QSemaphoreReleaser

Ausnahnesichere Verschiebung eines Aufrufs von `QSemaphore::release()`

QThread

Plattformunabhängige Methode zur Verwaltung von Threads

QThreadPool

Verwaltet eine Sammlung von QThreads

QThreadStorage

Datenspeicherung pro Thread

QWaitCondition

Bedingungsvariable zur Synchronisierung von Threads

QWriteLocker

Hilfsklasse, die das Sperren und Entsperren von Lese-Schreib-Sperren für den Schreibzugriff vereinfacht

QtConcurrent

Hochrangige APIs, die das Schreiben von Multithread-Programmen ohne Verwendung von Low-Level-Threading-Primitiven ermöglichen

QtConcurrent::QTaskBuilder

Wird zum Anpassen von Aufgabenparametern verwendet

QtFuture::WhenAnyResult

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

QAtomicInteger::qYieldCpu()

Hinweis: Die Threading-Klassenvon Qt sind mit nativen Threading-APIs implementiert, z. B. Win32 und pthreads. Daher können sie mit Threads derselben nativen API verwendet werden.

© 2026 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.