以下demo實現的功能:
#include
#include
class
logoutput:
public qthread
/*繼承qthread類,使log輸出另起執行緒,不干擾主線程*/
;/*定義匯出log的類*/
void
logoutput::run
()
void
custommessagehandler
(qtmsgtype type, const qmessagelogcontext &context, const qstring &msg)
txt = qdatetime::currentdatetime().tostring(
"yyyy-mm-dd hh:mm:ss.zzz") +
" " + txt;
"/debugs";
/*儲存log檔案的路徑*/
qdir dir
(path)
;
if(!dir.exists())
qfile outfile
(path+"/debug.log")
;
if(outfile.exists() && (outfile.size() >=
20*1024*
1024))
//若數量達到一定值,則刪除多餘的log檔案
}else
mutex.unlock();
}
logoutput logoutput;
logoutput.start();
/*開啟log輸出的執行緒,執行緒開啟後,預設呼叫run函式*/
以下demo實現的功能:
#include
#include
class
logoutput:
public qthread
/*繼承qthread類,使log輸出另起執行緒,不干擾主線程*/
;/*定義匯出log的類*/
void
logoutput::run
()
void
custommessagehandler
(qtmsgtype type, const qmessagelogcontext &context, const qstring &msg)
txt = qdatetime::currentdatetime().tostring(
"yyyy-mm-dd hh:mm:ss.zzz") +
" " + txt;
"/debugs";
/*儲存log檔案的路徑*/
qdir dir
(path)
;
if(!dir.exists())
qfile outfile
(path+"/debug.log")
;
if(outfile.exists() && (outfile.size() >=
20*1024*
1024))
//若數量達到一定值,則刪除多餘的log檔案
}else
mutex.unlock();
}
logoutput logoutput;
logoutput.start();
/*開啟log輸出的執行緒,執行緒開啟後,預設呼叫run函式*/
qt 多執行緒
qt通過三種形式提供了對執行緒的支援。它們分別是,一 平台無關的執行緒類,二 執行緒安全的事件投遞,三 跨執行緒的訊號 槽連線。這使得開發輕巧的多執行緒qt程式更為容易,並能充分利用多處理器機器的優勢。多執行緒程式設計也是乙個有用的模式,它用於解決執行較長時間的操作而不至於使用者介面失去響應。在qt...
Qt 多執行緒
qt 包含下面一些執行緒相關的類 qthread 提供了開始乙個新執行緒的方法 qthreadstorage 提供逐執行緒資料儲存 qmutex 提供相互排斥的鎖,或互斥量 qmutexlocker 是乙個便利類,它可以自動對 qmutex 加鎖與解鎖 qreadwriterlock 提供了乙個可以...
Qt多執行緒
今天學習qt的多執行緒,在學習多執行緒主要是兩個方面。一是多執行緒的基礎概念,二是多執行緒的同步,三是怎麼和主線程進行通訊。在這個主線程上面可以開始由qthread建立的物件的新的執行緒。這些由qthread建立的物件的新的執行緒之間的通訊,是通過使用含有互斥量,讀寫鎖,訊號量或者等待條件的共享變數...