QThread:Qt提供的最基礎的線程類,一個對象管理一個線程,本身維護線程啓動中止,建立銷燬,固然也能基於此類本身創建一個線程池html
QThreadPool:Qt提供的基於QThread實現的線程池,只須要提供給線程池「任務」便可,每個「任務」須要繼承QRunnable,pool還貼心的幫忙在運行完成後釋放內存。只不過runnable不支持信號槽,能夠作多重繼承QObject便可。安全
QtConcurrent:並行計算的高級API,用起來很方便,徹底不須要想線程的問題,全都是靜態函數,能夠運行自定義函數也提供了對容器的操做函數。多線程
相關博客:函數
Qt多線程-QThread
QThread安全的結束線程
Qt多線程-QThreadPool線程池與QRunnable
Qt多線程-QtConcurrent並行運算高級APIpost
只有QThread支持。可是其餘兩個能夠用QApplication::postEvent發出事件線程
QThread徹底支持,QThreadPool的QRunnable能夠經過多重繼承支持htm
Concurrent提供的map/filter函數能夠利用QFutureWatcher,使用此方式可用信號控制線程,但仍然無發經過信號槽對線程的數據作修改對象
run就徹底與信號槽無緣了,畢竟調用的只是一個函數繼承
這個優先級設置之後不必定有效,要看系統事件
QThread徹底支持,能夠用setPriority函數
Concurrent全部函數都支持QFuture,同時Concurrent支持指定QThreadPool