QT執行緒(一) 執行緒類

2021-06-14 17:41:07 字數 3320 閱讀 7643

**:

執行緒之間共享資料,但又單獨執行;

qt執行緒qthread是平台無關的;

通常主線程從main開始執行,而在主線程中建立其他執行緒,其他執行緒派生於qthread;

1、執行緒優先順序

總共8個優先順序:執行緒優先順序從上到下越來越高。

constant

value

description

qthread::idlepriority 0

scheduled only when no other threads are running.

qthread::lowestpriority 1

scheduled less often than lowpriority.

qthread::lowpriority 2

scheduled less often than normalpriority.

qthread::normalpriority 3

the default priority of the operating system.

qthread::highpriority 4

scheduled more often than normalpriority.

qthread::highestpriority 5

scheduled more often than highpriority.

qthread::timecriticalpriority 6

scheduled as often as possible.

qthread::inheritpriority 7

use the same priority as the creating thread. this is the default.

2、執行緒管理

2.1、執行緒啟動

void

start

( priority priority = inheritpriority )

啟動執行緒執行,啟動後會發出started訊號。

2.2、執行緒執行

intexec

()

進入執行緒eventloop。

virtual void

run

()

執行緒入口。

2.3、執行緒退出

void

quit

()

相當於exit(0)。

void

exit

( int returncode = 0 )

呼叫exit後,thread將退出event loop,並從exec返回,exec的返回值就是returncode。

通常returncode=0表示成功,其他值表示失敗。

void

terminate

()

結束執行緒,執行緒是否立即終止取決於作業系統。

執行緒被終止時,所有等待該執行緒finished的執行緒都將被喚醒。

terminate是否呼叫取決於setterminationenabled

( bool enabled = true )

開關。

2.4、執行緒等待

void

msleep

( unsigned long msecs )

void

sleep

( unsigned long secs )

void

usleep

( unsigned long usecs )

bool

wait

( unsigned long time = ulong_max )

執行緒將會被阻塞,等待time毫秒。和sleep不同的是,如果執行緒退出,則wait會返回。

2.4、執行緒狀態

bool

isfinished

() const

執行緒是否已退出。

bool

isrunning

() const

執行緒是否還處於執行態。

2.5、執行緒屬性

priority

priority

() const

void

setpriority

( priority priority )

void

setstacksize

( uint stacksize )

uint

stacksize

() const

void

setterminationenabled

( bool enabled = true )

設定是否響應terminate()。

3、執行緒例項

當我們建立執行緒時,首先是從qthread派生類定義乙個新的執行緒,然後再使用該執行緒時,建立該執行緒類的物件。

例如:

class mythread : public qthread
;
void 

mythread::run()

int main()

從qthread派生類時,需要重新實現qthread的虛函式run。

該函式是執行緒的入口,當我們使用start()啟動執行緒時,新執行緒就會執行run()。預設的run()函式就僅僅呼叫了exec()進入事件迴圈。

當然,定義自己的執行緒run()時,也可以不使用事件迴圈,

例如:

class thread : public qthread
;
thread::thread()
void thread::run()
void thread::stop()

QT執行緒(一) 執行緒類

執行緒之間共享資料,但又單獨執行 qt執行緒 qthread 是平台無關的 通常主線程從 main 開始執行,而在主線程中建立其他執行緒,其他執行緒派生於 qthread 1 執行緒優先順序總共8 個優先順序 執行緒優先順序從上到下越來越高。constant value description qt...

C 多執行緒(一) 執行緒管理

多執行緒是 此處省略一萬字,省略的文字詳細說明了什麼是多執行緒 其歷史及其發展 使用多執行緒的好處和缺點以及c c 對多執行緒的支援的歷史 c 標準庫自c 11標準以來開始支援多執行緒,多執行緒相關的類在thread標頭檔案中,所以使用請先必須 include 啟動乙個執行緒非常簡單,例程如下 in...

多執行緒技術 一 執行緒概述

程序 是應用程式的乙個執行例程,是應用程式的一次動態執行過程。執行緒 是程序中的乙個執行單元 是作業系統分配cpu時間的基本單元。windows是乙個支援多執行緒的系統。乙個程序可以包含若干個執行緒。多執行緒的概念 多執行緒 在同一時間執行多個任務的功能,稱為多執行緒或自由執行緒。多執行緒的優點 可...