QT下的多執行緒

2021-09-28 20:31:05 字數 2154 閱讀 9367

一.多執行緒的使用:

繼承qthread類,重寫protected: void run();函式,則此run函式即為多執行緒將執行的函式,ui類組合此類,呼叫start()函式即開啟此執行緒,並執行run函式

//.h

class

test1

:public qthread //!!

;//.cpp

void test1::

run(

)void test1::

read()

//.h

class

mainwindow

:public qmainwindow

;//.cpp

void mainwindow::

on_button_begin_clicked()

二.多執行緒在tcp通訊中的應用

基本流程

1.新建乙個類繼承自qtcpserver,重寫protected: void incomingconnection(qintptr socketdescriptor);當有乙個連線到來時將自動呼叫此函式,所以應在此函式中建立執行緒。

2.新建乙個類繼承自qthread,重寫protected: void run();,將此類組合進 1 中的類,則當 1 中的類使用start()後將自動呼叫run()函式

3.在 2 的run()函式中使用waitforreadyread()進行阻塞,從而獲取資料

4.改進 3 的接收方式,新建乙個類繼承自qtcpsocket,在其中使用readyread()與槽函式進行資訊接收與傳送

#include

#include

#include

"serverthread.h"

class

myserver

:public qtcpserver

;#include

"myserver.h"

myserver::

myserver()

void myserver::

incomingconnection

(qintptr socketdescriptor)

#include

#include

#include

class

serverthread

:public qthread

;#include

"serverthread.h"

serverthread::

serverthread()

void serverthread::

write_ptr

(qintptr p)

void serverthread::

run(

)else

qbytearray data;

forever

else}}

class

mainwindow

:public qmainwindow

;void mainwindow::

on_pushbutton_clicked()

#include

class

mysocket

:public qtcpsocket

;mysocket::

mysocket()

void mysocket::

recvdata()

}//更改**

void serverthread::

run(

)else

this

->

exec()

;}

三.借鑑出處

1.qt socket 多執行緒操作

2.qt tcp通訊,多執行緒伺服器端

qt 多執行緒

qt通過三種形式提供了對執行緒的支援。它們分別是,一 平台無關的執行緒類,二 執行緒安全的事件投遞,三 跨執行緒的訊號 槽連線。這使得開發輕巧的多執行緒qt程式更為容易,並能充分利用多處理器機器的優勢。多執行緒程式設計也是乙個有用的模式,它用於解決執行較長時間的操作而不至於使用者介面失去響應。在qt...

Qt 多執行緒

qt 包含下面一些執行緒相關的類 qthread 提供了開始乙個新執行緒的方法 qthreadstorage 提供逐執行緒資料儲存 qmutex 提供相互排斥的鎖,或互斥量 qmutexlocker 是乙個便利類,它可以自動對 qmutex 加鎖與解鎖 qreadwriterlock 提供了乙個可以...

Qt多執行緒

今天學習qt的多執行緒,在學習多執行緒主要是兩個方面。一是多執行緒的基礎概念,二是多執行緒的同步,三是怎麼和主線程進行通訊。在這個主線程上面可以開始由qthread建立的物件的新的執行緒。這些由qthread建立的物件的新的執行緒之間的通訊,是通過使用含有互斥量,讀寫鎖,訊號量或者等待條件的共享變數...