基於QT4的乙個多執行緒工程實現

2021-06-06 06:02:18 字數 1070 閱讀 1688

本宣告

下面的例子有問題,導致全部事件都是在建立thread的執行緒裡處理的,

正確例子在:

想法:需要模仿ace非同步呼叫的方法,在乙個執行緒分配任務給工作執行緒,並等待工作執行緒完成後返回結果。

定義乙個執行緒類:

標頭檔案:

#ifndef mythread_h

#define mythread_h

#include

#include

#define method_event qevent::user + 1028

class methodevent : public qevent

~methodevent()

public:

int i;//儲存返回值!

};class mythread : public qthread

;#endif // mythread_h

實現檔案:

#include "mythread.h"

mythread::mythread()

bool mythread::stopthread()

void mythread::run()

void mythread::customevent(qevent * e)

methodevent* methodevent = static_cast(e);

if(null == methodevent)

return;

for (int i = 0; i < 1000000000; ++i)

}主函式:

int result = event.i;//得到返回值。

return a.exec();

}說明:如果不用到返回值,也就是只是簡單分配任務的話,可以用postevent的方法,也就是要new乙個event,發給工作執行緒,工作執行緒處理完事件後會去刪除你new的event,主線程就不管了。換句話說,postevent馬上返回,不管event是否被處理完,兩個執行緒同時在工作。而上面是主線程要等待工作執行緒完成工作後才可以繼續,阻塞在sendevent上了。

收藏到:

del.icio.us

QT4中構建多執行緒的伺服器

出錯和經驗 2009 04 28 15 43 48 閱讀12 字型大小 大 中小 訂閱qt4中構建多執行緒的伺服器 首先說一下對多執行緒 這個名詞的理解過程。以前聽說過很多次多執行緒這個詞,而且往往與 伺服器聯絡起來,因此一直把多執行緒誤解為伺服器特有的功能 直到這次 課程設計 仔細 學習 了一下多...

QT4中構建多執行緒的伺服器

而對於伺服器來說,多執行緒的這個特性太有用了,因為多執行緒使得伺服器可能同時響應多個客戶端的請求,所以現在伺服器大多採用多執行緒,所以才會造成我開始的誤解。不管是多執行緒,還是伺服器,qt中已經封裝好了特定的類,所以使用起來也很方便。下面建立乙個支援多執行緒 tcp的伺服器。首先建立乙個伺服器。新建...

基於多執行緒的乙個檔案複製練習

from threading import thread,lock import os from time import sleep lock lock urls home tarena 桌面 home tarena 模板 home tarena home tarena filename input...