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:
These articles assume that the reader has basic knowledge about multithreaded applications.
- The Threading Classes
- Multithreading Technologies in Qt
- Synchronizing Threads
- Reentrancy and Thread-Safety
- Threads and QObjects
- Thread-Support in Qt Modules
The Threading Classes
These classes are relevant to threaded applications.
Selecting values from a sequence and combining them, all in parallel | |
Transforming values from a sequence and combining them, all in parallel | |
A simple way to run a task in a separate thread | |
A configurable way to run a task in a separate thread | |
Platform-independent atomic operations on integers | |
Template class that provides platform-independent atomic operations on pointers | |
Represents the result of an asynchronous computation | |
Convenience class that simplifies QFuture synchronization | |
Allows monitoring a QFuture using signals and slots | |
Access serialization between threads | |
Convenience class that simplifies locking and unlocking mutexes | |
Way to store computation results to be accessed by QFuture | |
Convenience class that simplifies locking and unlocking read-write locks for read access | |
Read-write locking | |
Access serialization between threads | |
The base class for all runnable objects | |
General counting semaphore | |
Exception-safe deferral of a QSemaphore::release() call | |
Platform-independent way to manage threads | |
Manages a collection of QThreads | |
Per-thread data storage | |
Condition variable for synchronizing threads | |
Convenience class that simplifies locking and unlocking read-write locks for write access | |
High-level APIs that make it possible to write multi-threaded programs without using low-level threading primitives | |
Used for adjusting task parameters | |
QtFuture::WhenAnyResult is used to represent the result of QtFuture::whenAny() | |
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.