一.多執行緒的使用:
繼承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建立的物件的新的執行緒之間的通訊,是通過使用含有互斥量,讀寫鎖,訊號量或者等待條件的共享變數...