QT匯出日誌多執行緒

2021-10-24 18:32:18 字數 1871 閱讀 6412

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