Qt 中的綫程支持

Qt 以獨立於平颱的綫程類、張貼事件的綫程安全方式及跨綫程的信號/槽連接形式,提供綫程支持。這使開發可移植多綫程 Qt 應用程序和利用多處理器機器,變得很容易。多綫程編程也是在不凍結應用程序用戶界麵情況下,用於履行耗時操作的有用範式。

早期版本的 Qt 提供在不支持綫程的情況下構建庫的選項。從 Qt 4.0 起,綫程始終被啓用。

話題:

這些文章假定讀者擁有有關多綫程應用程序的基本知識。

綫程類

這些類有關綫程化應用程序。

並發過濾和過濾縮減 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
Concurrent Task A configurable way to run a task in a separate thread
QAtomicInteger 於整數上獨立於平颱的原子操作
QAtomicPointer 為指針提供獨立於平颱的原子操作的模闆類
QFuture 錶示異步計算的結果
QFutureSynchronizer 簡化 QFuture 同步的方便類
QFutureWatcher 允許監視 QFuture 使用信號和插槽
QMutex 在綫程之間串行化訪問
QMutexLocker 簡化鎖定和解鎖互斥的方便類
QPromise Way to store computation results to be accessed by QFuture
QReadLocker 用於讀取訪問的鎖定和解鎖的讀寫鎖的方便簡化類
QReadWriteLock 讀/寫鎖定
QRecursiveMutex 在綫程之間串行化訪問
QRunnable 用於所有可運行對象的基類
QSemaphore 通用計數信號量
QSemaphoreReleaser 異常安全的 QSemaphore::release() 調用的延遲
QThread 獨立於平颱的綫程管理辦法
QThreadPool 管理一批 QThread
QThreadStorage 每綫程數據存儲
QWaitCondition 用於同步綫程的條件變量
QWriteLocker 用於寫入訪問的鎖定和解鎖的讀寫鎖的方便簡化類
QtConcurrent 使之無需使用低級綫程原語就能編寫多綫程程序的高級 API
QtConcurrent::QTaskBuilder Used for adjusting task parameters
QtFuture::WhenAnyResult QtFuture::WhenAnyResult is used to represent the result of QtFuture::whenAny()

注意: Qt 的綫程類是采用本機綫程 API 實現的 (如,Win32 和 PThreads)。因此,它們可以與相同本機 API 綫程一起使用。