win7環境下,qt多執行緒寫資料庫,一收到資料就創建一個執行緒寫資料庫遇到卡的問題;
在收到UDP資料后,發送信號給主視窗,主視窗創建一個執行緒寫資料
過了一分鐘后就開始卡,查找原因是執行緒創建太多,卡在那了
QMutex mymutex;
void CTestThread::run()
{
mymutex.lock();
// 插入資料庫內容
qDebug()<<"插入成功:";
mymutex.unlock();
}
uj5u.com熱心網友回復:
多執行緒、加鎖,跟單執行緒效率差不多。用單執行緒吧uj5u.com熱心網友回復:
首先鎖是有資源消耗的,鎖用的太多,還不如單執行緒。執行緒一般在需要并發的情況才用。
來一條資料就建立一個執行緒,這樣設計肯定不合理的,執行緒不是無節制的使用,太多了就考慮使用執行緒池來管理了。
uj5u.com熱心網友回復:
關鍵還是看你是每次都重新創建資料庫連接還是有資料庫連接池,資料庫連接是不能多個執行緒共享的。所以一般我們會自己寫個連接池,每次有新執行緒需要去連接池獨占獲取一個空閑連接。池的大小你自己可以根據實際情況定。我一般16個連接處理,飛快轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/9235.html
標籤:Qt
下一篇:Dart List如何擴容的
