本宣告
下面的例子有問題,導致全部事件都是在建立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...