Qt 多綫程

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

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

話題:

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

綫程類

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

並發過濾和過濾縮減

從序列選擇值並平行地組閤它們所有

並發映射和映射縮減

從序列變換值並平行地組閤它們所有

並發運行

在單獨綫程中運行任務的簡單辦法

並發任務

在單獨綫程中運行任務的可配置辦法

QAtomicInteger

於整數上獨立於平颱的原子操作

QAtomicPointer

為指針提供獨立於平颱的原子操作的模闆類

QFuture

錶示異步計算的結果

QFutureSynchronizer

簡化 QFuture 同步的方便類

QFutureWatcher

允許監視 QFuture 使用信號和插槽

QMutex

在綫程之間串行化訪問

QMutexLocker

簡化鎖定和解鎖互斥的方便類

QPromise

存儲由 QFuture 訪問的計算結果的辦法

QReadLocker

用於讀取訪問的鎖定和解鎖的讀寫鎖的方便簡化類

QReadWriteLock

讀/寫鎖定

QRecursiveMutex

在綫程之間串行化訪問

QRunnable

用於所有可運行對象的基類

QSemaphore

通用計數信號量

QSemaphoreReleaser

異常安全的 QSemaphore::release() 調用的延遲

QThread

獨立於平颱的綫程管理辦法

QThreadPool

管理一批 QThread

QThreadStorage

每綫程數據存儲

QWaitCondition

用於同步綫程的條件變量

QWriteLocker

用於寫入訪問的鎖定和解鎖的讀寫鎖的方便簡化類

QtConcurrent

使之無需使用低級綫程原語就能編寫多綫程程序的高級 API

QtConcurrent::QTaskBuilder

用於調節任務參數

QtFuture::WhenAnyResult

QtFuture::WhenAnyResult 用於錶示 QtFuture::whenAny() 的結果

QAtomicInteger::qYieldCpu()

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