成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

淺淺淡淡 Qt 線程類

移動開發
QThread 是Qt中一個對線程支持的核心的底層類。每個線程對象代表了一個運行的線程。由于Qt的跨平臺特性,QThread成功隱藏了所有在不同操作系統里使用線程的平臺相關性代碼。

Qt 線程類是本文介紹的內容,Qt線程的支持已經有很多年了(發布于2000年九月22日的Qt 2.2引入了QThread),Qt 4.0版本的release則對其所有所支持平臺默認地是對多線程支持的。(當然你也可以關掉對線程的支持,參見這里)。現在Qt提供了不少用于處理線程,讓你我們首先預覽一下:

QThread

QThread Qt中一個對線程支持的核心的底層類。每個線程對象代表了一個運行的線程。由于Qt的跨平臺特性,QThread成功隱藏了所有在不同操作系統里使用線程的平臺相關性代碼。為了運用QThread從而讓代碼在一個線程里運行,我們可以創建一個QThread的子類,并重載QThread::run() 方法:

  1. class Thread : public QThread {  
  2.  protected: void run() {  
  3.  }  
  4.  }; 

接著,我們可以使用:

  1. class Thread : public QThread { protected: void run() {  
  2.  }   
  3. }; 

來真正的啟動一個新的線程。 請注意,Qt 4.4版本之后,QThread不再支持抽象;現在虛函數QThread::run()實際上是簡單調用了QThread::exec(),而它啟動了線程的事件循環。(更多信息見后文)

QRunnable 和 QThreadPool

QRunnable [doc.qt.nokia.com] 是一種輕量級的、以“run and forget”方式來在另一個線程開啟任務的抽象,為了實現這一功能,我們所需要做的全部事情是派生QRunnable ,并實現純虛函數方法run()

  1. class Task : public QRunnable {  
  2.  public: void run() {  
  3.  }   
  4. }; 

事實上,我們是使用QThreadPool 來運行一個QRunnable 對象,它維護了一個線程池。通過調用QThreadPool::start(runnable) ,我們把一個QRunnable 放入了QThreadPool的運行隊列中;只要線程是可見得,QRunnable 將會被拾起并且在那個線程里運行。盡管所有的Qt應用程序都有一個全局的線程池,且它是通過調用 QThreadPool::globalInstance()可見得,但我們總是顯式地創建并管理一個私有的QThreadPool 實例。請注意,QRunnable 并不是一個QObject,它并沒有一個內置的與其他組件顯式通訊的方法。你必須使用底層的線程原語(比如收集結構的枷鎖保護隊列等)來親自編寫代碼。

QtConcurrent

QtConcurrent 是一個構建在QThreadPool之上的上層API,它用于處理最普通的并行計算模式:map [en.wikipedia.org], reduce [en.wikipedia.org], and filter [en.wikipedia.org] 。同時,QtConcurrent::run()方法提供了一種便于在另一個線程運行一個函數的方法。不像QThread 以及QRunnable,QtConcurrent 沒有要求我們使用底層的同步原語,QtConcurrent 所有的方法會返回一個QFuture 對象,它包含了結果而且可以用來查詢線程計算的狀態(它的進度),從而暫停、繼續、取消計算。QFutureWatcher 可以用來監聽一個QFuture 進度,并且通過信號和槽與之交互(注意QFuture是一個基于數值的,它并沒有繼承自QObject).

功能比較

淺淺淡淡 Qt 線程類

小結:Qt 線程類的內容介紹完了,希望本文對你有所幫助,新昂要獲取更多的內容請參考編輯推薦。

責任編輯:zhaolei 來源: 互聯網
相關推薦

2011-06-20 14:40:19

Qt 3D

2011-06-20 15:40:19

QT 信號

2011-07-08 10:49:59

Cocoa Touch 靜態庫

2011-06-30 11:23:29

Qt 線程

2011-06-16 11:28:48

Qt QApplicati

2011-05-31 16:19:33

SEO

2011-06-21 16:51:21

Qt 靜態 編譯

2011-06-22 10:12:08

Qt 線程

2011-06-30 17:51:17

QT 元類型 線程

2022-09-07 00:13:14

元宇宙區塊鏈數字孿生

2011-06-14 15:45:02

Qt Object

2011-06-22 15:50:45

QT 線程

2011-06-22 15:09:34

Qt 線程 sleep

2011-06-16 11:04:07

Qt

2011-06-14 15:28:44

QT

2011-07-04 16:12:00

QT QWidget

2011-06-15 10:49:26

Qt QTableItem

2020-06-15 07:00:00

Linux嵌入式系統

2011-06-16 11:13:13

QtQWidget

2011-06-29 16:34:11

Qt 子線程 線程
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久高清免费视频 | 国产亚洲欧美在线 | 成人一区二区三区 | 一二三区在线 | 色视频欧美 | 免费一级黄色录像 | 在线观看亚洲专区 | 久久午夜国产精品www忘忧草 | 九九久久免费视频 | 日本不卡高清视频 | 中文字字幕一区二区三区四区五区 | 天堂综合网 | 亚洲手机在线 | 国产日韩一区二区三区 | 狠狠色网| 欧美成人精品一区二区男人看 | 精品国产乱码久久久久久牛牛 | 伊人热久久 | 日韩精品视频在线 | 丁香婷婷在线视频 | 国产偷久久一级精品60部 | 国产1区| 91免费电影 | 国产成人精品久久二区二区91 | 精品免费 | 日韩一区二区三区av | 在线观看的av| 久久久久久久久蜜桃 | 色综合久久天天综合网 | 中文字幕视频一区 | 99资源站 | 91.com在线观看 | 一区二区三区四区在线播放 | 午夜小电影 | 一区二区三区四区不卡 | 国产草草视频 | 日韩在线播放一区 | 日韩在线免费 | 中文一区 | a级在线免费视频 | 免费在线黄色av |