Thread Support in Qt

Qt provides thread support in the form of platform-independent threading classes, a thread-safe way of posting events, and signal-slot connections across threads. This makes it easy to develop portable multithreaded Qt applications and take advantage of multiprocessor machines. Multithreaded programming is also a useful paradigm for performing time-consuming operations without freezing the user interface of an application.

Earlier versions of Qt offered an option to build the library without thread support. Since Qt 4.0, threads are always enabled.

Topics:

This document is intended for an audience that has knowledge of, and experience with, multithreaded applications. If you are new to threading see our Recommended Reading list:

The Threading Classes

These classes are relevant to threaded applications.

Concurrent Filter and Filter-Reduce

Concurrent Map and Map-Reduce

Concurrent Run

QAtomicInteger

Platform-independent atomic operations on integers

QAtomicPointer

Template class that provides platform-independent atomic operations on pointers

QFuture

Represents the result of an asynchronous computation

QFutureSynchronizer

Convenience class that simplifies QFuture synchronization

QFutureWatcher

Allows monitoring a QFuture using signals and slots

QMutex

Access serialization between threads

QMutexLocker

Convenience class that simplifies locking and unlocking mutexes

QReadLocker

Convenience class that simplifies locking and unlocking read-write locks for read access

QReadWriteLock

Read-write locking

QRunnable

The base class for all runnable objects

QSemaphore

General counting semaphore

QThread

Platform-independent way to manage threads

QThreadPool

Manages a collection of QThreads

QThreadStorage

Per-thread data storage

QWaitCondition

Condition variable for synchronizing threads

QWriteLocker

Convenience class that simplifies locking and unlocking read-write locks for write access

QtConcurrent

High-level APIs that make it possible to write multi-threaded programs without using low-level threading primitives

Note: Qt's threading classes are implemented with native threading APIs; e.g., Win32 and pthreads. Therefore, they can be used with threads of the same native API.

© 2014 Digia Plc and/or its subsidiaries. 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. Digia, Qt and their respective logos are trademarks of Digia Plc in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.