Qt學習系列之四 多執行緒及通過事件進行通訊

2021-06-01 21:28:38 字數 678 閱讀 8682

可以通過qthread實現跨平台的多執行緒開發,qt庫負責在特定平台上的特定多執行緒實現。要採用qthread進行多執行緒開發,首先需要包含標頭檔案:

#include

然後需要從qthread繼承乙個自己的執行緒類,暫作mythread,關鍵是要實現qthread內的乙個虛函式run。在run函式內部,最後一般都呼叫exec(),使得執行緒進入事件迴圈,否則執行緒主函式run執行結束,執行緒也就退出了。

class mythread : public qthread ;

其中,parent儲存的是建立該執行緒的視窗,也就是該執行緒的父執行緒,主要用於該子執行緒向父執行緒傳送特定事件,以便進行執行緒間通訊。

自定義訊息首先需要包含標頭檔案:

#include

然後定義自己的事件值:

const qevent::type myevent = (qevent::type)1234;

然後在run函式裡面(實際上是指在任何你想要和父執行緒進行通訊的地方,我這裡簡化為就是在run函式內部了)通過:

將該事件傳送出去。

父執行緒內通過改寫虛函式event,來使得能夠捕獲訊息:

bool dialog::event(qevent *event)

return qwidget::event(event); }

這樣,兩個執行緒就能夠同時執行並能夠進行執行緒間通訊了。

Qt中多執行緒系列之執行緒控制

執行緒建立完了之後必須要對其進行限制和控制,我們就是執行緒的監護人,不能說任由它自由,得對它進行合理約束。接下來我們講執行緒的控制部分,1 執行緒休眠 想象一下一種情形,日常用的電腦,如果我們需要離開一段時間,那麼可能會將它暫時休眠一下,為了節約用電,也響應一下環境保護,別忘了現在都講低炭生活。那麼...

多執行緒學習之四返回模式

balking 返回模式 timed 超時模式 一 balking pattern的參與者 guardedobject 被警戒的物件 該模式的角色 模擬修改警戒物件的執行緒,當警戒條件達到執行具體操作的執行緒,參與者 被警戒的參與者 二 balking pattern模式什麼時候使用 不需要刻意去執...

多執行緒程式設計系列學習之 lock關鍵字

概念 lock 語句獲取給定物件的互斥 lock,執行語句塊,然後釋放 lock。持有 lock 時,持有 lock 的執行緒可以再次獲取並釋放 lock。阻止任何其他執行緒獲取 lock 並等待釋放 lock。lock 只適用單機情況,分布式和負債均衡可以考慮分布式鎖。形式lock this lo...