Qt之執行緒補充

2021-09-10 02:13:22 字數 3165 閱讀 7435

1、定義

class hk_r_version_cmd :public qthread

;//輸出結果

struct dataout ;

public:

explicit hk_r_version_cmd()

~hk_r_version_cmd()

;int

setdatain

(struct datain *datain)

;int

readdataout

(struct dataout*dataout)

;void

stop()

protected:

int m_port;

//攝像頭埠

qstring m_ip;

//攝像頭

qudpsocket *m_udpsocket;

struct datain m_dataintempstr;

//啟動執行緒時

struct dataout m_dataouttempstr;

//輸出結果

volatile bool m_tostop;

void

run();

};

2、執行緒實現

hk_r_version_cmd::~

hk_r_version_cmd()

int hk_r_version_cmd:

:setdatain

(hk_r_version_cmd:

:datain *datain)

int hk_r_version_cmd:

:readdataout

(hk_r_version_cmd:

:dataout *dataout)

void hk_r_version_cmd:

:run()

//傳送資料

struct hk_txddata txddatatemp;

txddatatemp.command =

0x01

; txddatatemp.state =

0x00

; txddatatemp.length =0;

unsigned

char

*txddatabuff = new unsigned

char

[txddatatemp.length+6]

;int txdlength =

hk_txddatacreat

(&txddatatemp,txddatabuff);if

(txdlength ==-1

) qbytearray txdbuff;

txdbuff.

resize

(txdlength)

; toolfunc:

:chararrtobytearraycopy

(txdbuff,txddatabuff,txdlength)

;int rxdtimecount;

//計時

int trycount =3;

//重試

int breakmark =1;

struct hk_rxddata* rxdcommand = new struct hk_rxddata;

unsigned

char

* rxdbuff = new unsigned

char

[600];

while

(breakmark==1)

//協議

if(rxdcommand->command !=

0x81

)//資料長度

if(rxdcommand->length!=12)

toolfunc:

:chararrcopy

(m_dataouttempstr.data,rxdcommand->data,rxdcommand->length)

; m_dataouttempstr.res =1;

breakmark =0;

break;}

else}if

(m_dataouttempstr.res !=0)

else}}

delete rxdcommand;

delete[

] rxdbuff;

delete[

] txddatabuff;

delete m_udpsocket;

}

3、建立執行緒

void detetioncamerahkwswin:

:readversion_btn_clicked()

3、執行緒結束處理(ui執行緒中處理)

void detetioncamerahkwswin:

:thk_r_version_cmd_manage()

else

if(dataoutttemp.res ==1)

else

if(dataoutttemp.res ==2)

else

ui->rxdstateedit->

settext

(statestr);if

(dataoutttemp.res ==1)

else

statestr.

(str)

; statestr.

("\r\n");

ui->rxdtedit->

settext

(statestr);}

//****************************************===

//關閉處理執行緒

m_thk_r_version_cmd->

disconnect()

; delete m_thk_r_version_cmd;

m_thk_r_version_cmd =

null

;//顯示結果***********************************=

//****************************************====

}

Qt之執行緒同步

qt中實現了如下類,提供執行緒同步機制 qmutex 互斥量。用來確保同一時刻,只能有乙個執行緒訪問某一資源。qreadwritelock 讀寫鎖。允許同一時刻多個執行緒讀取某一資源,但只要有乙個執行緒在寫該資源,則不允許其他程同時讀取該資源。qwaitcondition 等待條件。提供了乙個條件變...

python之執行緒相關操作 補充

1 執行緒的其他方法 import threading import time from threading import thread,current thread deff1 n time.sleep 1 print 子執行緒名稱 current thread getname print 子執行...

多執行緒補充

標籤 空格分隔 多執行緒 pragma mark 延遲執行 void delay pragma mark 只執行一次 void once pragma mark 快速迭代 獲取 資料夾路徑和目的資料夾路徑 nsstring source users v desktop source nsstring...